From c46458c6f2d107c64d958815ed00deefcbc32a20 Mon Sep 17 00:00:00 2001 From: loveuer Date: Thu, 11 Jul 2024 16:37:26 +0800 Subject: [PATCH] :tada:: init project --- .gitignore | 7 + .nfctl | 27 + Dockerfile | 30 + deployment/database.dev.yml | 56 + deployment/run.sh | 8 + etc/config.json | 27 + front/.editorconfig | 16 + front/.gitignore | 42 + front/README.md | 27 + front/angular.json | 113 + front/ngsw-config.json | 30 + front/package.json | 44 + front/pnpm-lock.yaml | 9818 +++++++++++++++++ front/src/app/app.component.html | 27 + front/src/app/app.component.scss | 78 + front/src/app/app.component.spec.ts | 29 + front/src/app/app.component.ts | 38 + front/src/app/app.config.ts | 22 + front/src/app/app.routes.ts | 12 + .../component/confirm/confirm.component.html | 5 + .../component/confirm/confirm.component.scss | 0 .../confirm/confirm.component.spec.ts | 23 + .../component/confirm/confirm.component.ts | 20 + .../create-user-dialog.component.html | 40 + .../create-user-dialog.component.scss | 14 + .../create-user-dialog.component.spec.ts | 23 + .../create-user-dialog.component.ts | 102 + .../update-user-dialog.component.html | 35 + .../update-user-dialog.component.scss | 14 + .../update-user-dialog.component.spec.ts | 23 + .../update-user-dialog.component.ts | 93 + .../app/interceptor/alerter.interceptor.ts | 48 + front/src/app/interface/confirm_data.ts | 4 + front/src/app/interface/enum.ts | 5 + front/src/app/interface/log.ts | 13 + front/src/app/interface/response.ts | 5 + front/src/app/interface/user.ts | 30 + front/src/app/page/home/home.component.html | 1 + front/src/app/page/home/home.component.scss | 76 + .../src/app/page/home/home.component.spec.ts | 23 + front/src/app/page/home/home.component.ts | 17 + front/src/app/page/log/log.component.html | 28 + front/src/app/page/log/log.component.scss | 11 + front/src/app/page/log/log.component.spec.ts | 23 + front/src/app/page/log/log.component.ts | 40 + front/src/app/page/login/login.component.html | 15 + front/src/app/page/login/login.component.scss | 24 + .../app/page/login/login.component.spec.ts | 23 + front/src/app/page/login/login.component.ts | 46 + front/src/app/page/user/user.component.html | 52 + front/src/app/page/user/user.component.scss | 37 + .../src/app/page/user/user.component.spec.ts | 23 + front/src/app/page/user/user.component.ts | 92 + front/src/app/service/log.service.spec.ts | 16 + front/src/app/service/log.service.ts | 35 + front/src/app/service/msg.service.ts | 214 + front/src/app/service/user.service.spec.ts | 16 + front/src/app/service/user.service.ts | 119 + front/src/assets/.gitkeep | 0 front/src/assets/icons/icon-128x128.png | Bin 0 -> 2875 bytes front/src/assets/icons/icon-144x144.png | Bin 0 -> 3077 bytes front/src/assets/icons/icon-152x152.png | Bin 0 -> 3293 bytes front/src/assets/icons/icon-192x192.png | Bin 0 -> 4306 bytes front/src/assets/icons/icon-384x384.png | Bin 0 -> 11028 bytes front/src/assets/icons/icon-512x512.png | Bin 0 -> 16332 bytes front/src/assets/icons/icon-72x72.png | Bin 0 -> 1995 bytes front/src/assets/icons/icon-96x96.png | Bin 0 -> 2404 bytes front/src/favicon.ico | Bin 0 -> 15086 bytes front/src/index.html | 18 + front/src/main.ts | 6 + front/src/manifest.webmanifest | 59 + front/src/proxy.conf.json | 6 + front/src/styles.scss | 70 + front/src/tool.ts | 6 + front/tsconfig.app.json | 14 + front/tsconfig.json | 32 + front/tsconfig.spec.json | 14 + go.mod | 67 + go.sum | 381 + internal/api/api.go | 66 + internal/api/start.go | 43 + internal/cmd/execute.go | 37 + internal/cmd/init.go | 16 + internal/controller/impl.go | 12 + internal/controller/user.go | 154 + internal/database/cache/cache_lru.go | 109 + internal/database/cache/cache_memory.go | 65 + internal/database/cache/cache_redis.go | 54 + internal/database/cache/client.go | 33 + internal/database/cache/error.go | 7 + internal/database/cache/init.go | 70 + internal/database/db/client.go | 38 + internal/database/db/init.go | 46 + internal/database/es/client.go | 29 + internal/database/mq/client.go | 89 + internal/database/mq/client_test.go | 111 + internal/database/mq/consume.go | 97 + internal/database/mq/opt.go | 48 + internal/database/mq/publish.go | 62 + internal/database/nebula/client.go | 34 + internal/handler/log.go | 102 + internal/handler/user.go | 486 + internal/interfaces/database.go | 16 + internal/interfaces/enum.go | 11 + internal/interfaces/logger.go | 7 + internal/invoke/client.go | 91 + internal/invoke/resolve.go | 82 + internal/invoke/resolve_v2.go | 43 + internal/invoke/retry.go | 43 + internal/log/log.go | 40 + internal/middleware/auth/auth.go | 55 + .../front/dist/front/3rdpartylicenses.txt | 370 + .../browser/assets/icons/icon-128x128.png | Bin 0 -> 2875 bytes .../browser/assets/icons/icon-144x144.png | Bin 0 -> 3077 bytes .../browser/assets/icons/icon-152x152.png | Bin 0 -> 3293 bytes .../browser/assets/icons/icon-192x192.png | Bin 0 -> 4306 bytes .../browser/assets/icons/icon-384x384.png | Bin 0 -> 11028 bytes .../browser/assets/icons/icon-512x512.png | Bin 0 -> 16332 bytes .../front/browser/assets/icons/icon-72x72.png | Bin 0 -> 1995 bytes .../front/browser/assets/icons/icon-96x96.png | Bin 0 -> 2404 bytes .../front/dist/front/browser/favicon.ico | Bin 0 -> 15086 bytes .../front/dist/front/browser/index.html | 18 + .../front/dist/front/browser/main-CLMZMBYY.js | 12 + .../dist/front/browser/manifest.webmanifest | 59 + .../front/dist/front/browser/ngsw-worker.js | 1863 ++++ .../front/dist/front/browser/ngsw.json | 79 + .../dist/front/browser/polyfills-TMVK3KFA.js | 2 + .../front/dist/front/browser/safety-worker.js | 30 + .../dist/front/browser/styles-NJ66DI6F.css | 1 + .../dist/front/browser/worker-basic.min.js | 30 + internal/middleware/front/front.go | 61 + internal/middleware/logger/logger.go | 62 + internal/middleware/oplog/new.go | 117 + internal/middleware/oplog/oplog.go | 8 + internal/middleware/privilege/privilege.go | 86 + internal/model/init.go | 87 + internal/model/interface.go | 17 + internal/model/oplog.go | 294 + internal/model/privilege.go | 61 + internal/model/role.go | 85 + internal/model/user.go | 226 + internal/opt/opt.go | 78 + internal/opt/var.go | 46 + internal/sqlType/err.go | 9 + internal/sqlType/jsonb.go | 76 + internal/sqlType/nullStr.go | 42 + internal/sqlType/set.go | 53 + internal/sqlType/strSlice.go | 109 + internal/sqlType/uint64Slice.go | 71 + internal/tool/ctx.go | 38 + internal/tool/human.go | 24 + internal/tool/must.go | 11 + internal/tool/password.go | 84 + internal/tool/password_test.go | 11 + internal/tool/random.go | 54 + internal/tool/table.go | 117 + internal/tool/tools.go | 19 + main.go | 22 + readme.md | 66 + 159 files changed, 19246 insertions(+) create mode 100644 .gitignore create mode 100644 .nfctl create mode 100644 Dockerfile create mode 100644 deployment/database.dev.yml create mode 100644 deployment/run.sh create mode 100644 etc/config.json create mode 100644 front/.editorconfig create mode 100644 front/.gitignore create mode 100644 front/README.md create mode 100644 front/angular.json create mode 100644 front/ngsw-config.json create mode 100644 front/package.json create mode 100644 front/pnpm-lock.yaml create mode 100644 front/src/app/app.component.html create mode 100644 front/src/app/app.component.scss create mode 100644 front/src/app/app.component.spec.ts create mode 100644 front/src/app/app.component.ts create mode 100644 front/src/app/app.config.ts create mode 100644 front/src/app/app.routes.ts create mode 100644 front/src/app/component/confirm/confirm.component.html create mode 100644 front/src/app/component/confirm/confirm.component.scss create mode 100644 front/src/app/component/confirm/confirm.component.spec.ts create mode 100644 front/src/app/component/confirm/confirm.component.ts create mode 100644 front/src/app/component/create-user-dialog/create-user-dialog.component.html create mode 100644 front/src/app/component/create-user-dialog/create-user-dialog.component.scss create mode 100644 front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts create mode 100644 front/src/app/component/create-user-dialog/create-user-dialog.component.ts create mode 100644 front/src/app/component/update-user-dialog/update-user-dialog.component.html create mode 100644 front/src/app/component/update-user-dialog/update-user-dialog.component.scss create mode 100644 front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts create mode 100644 front/src/app/component/update-user-dialog/update-user-dialog.component.ts create mode 100644 front/src/app/interceptor/alerter.interceptor.ts create mode 100644 front/src/app/interface/confirm_data.ts create mode 100644 front/src/app/interface/enum.ts create mode 100644 front/src/app/interface/log.ts create mode 100644 front/src/app/interface/response.ts create mode 100644 front/src/app/interface/user.ts create mode 100644 front/src/app/page/home/home.component.html create mode 100644 front/src/app/page/home/home.component.scss create mode 100644 front/src/app/page/home/home.component.spec.ts create mode 100644 front/src/app/page/home/home.component.ts create mode 100644 front/src/app/page/log/log.component.html create mode 100644 front/src/app/page/log/log.component.scss create mode 100644 front/src/app/page/log/log.component.spec.ts create mode 100644 front/src/app/page/log/log.component.ts create mode 100644 front/src/app/page/login/login.component.html create mode 100644 front/src/app/page/login/login.component.scss create mode 100644 front/src/app/page/login/login.component.spec.ts create mode 100644 front/src/app/page/login/login.component.ts create mode 100644 front/src/app/page/user/user.component.html create mode 100644 front/src/app/page/user/user.component.scss create mode 100644 front/src/app/page/user/user.component.spec.ts create mode 100644 front/src/app/page/user/user.component.ts create mode 100644 front/src/app/service/log.service.spec.ts create mode 100644 front/src/app/service/log.service.ts create mode 100644 front/src/app/service/msg.service.ts create mode 100644 front/src/app/service/user.service.spec.ts create mode 100644 front/src/app/service/user.service.ts create mode 100644 front/src/assets/.gitkeep create mode 100644 front/src/assets/icons/icon-128x128.png create mode 100644 front/src/assets/icons/icon-144x144.png create mode 100644 front/src/assets/icons/icon-152x152.png create mode 100644 front/src/assets/icons/icon-192x192.png create mode 100644 front/src/assets/icons/icon-384x384.png create mode 100644 front/src/assets/icons/icon-512x512.png create mode 100644 front/src/assets/icons/icon-72x72.png create mode 100644 front/src/assets/icons/icon-96x96.png create mode 100644 front/src/favicon.ico create mode 100644 front/src/index.html create mode 100644 front/src/main.ts create mode 100644 front/src/manifest.webmanifest create mode 100644 front/src/proxy.conf.json create mode 100644 front/src/styles.scss create mode 100644 front/src/tool.ts create mode 100644 front/tsconfig.app.json create mode 100644 front/tsconfig.json create mode 100644 front/tsconfig.spec.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/api/api.go create mode 100644 internal/api/start.go create mode 100644 internal/cmd/execute.go create mode 100644 internal/cmd/init.go create mode 100644 internal/controller/impl.go create mode 100644 internal/controller/user.go create mode 100644 internal/database/cache/cache_lru.go create mode 100644 internal/database/cache/cache_memory.go create mode 100644 internal/database/cache/cache_redis.go create mode 100644 internal/database/cache/client.go create mode 100644 internal/database/cache/error.go create mode 100644 internal/database/cache/init.go create mode 100644 internal/database/db/client.go create mode 100644 internal/database/db/init.go create mode 100644 internal/database/es/client.go create mode 100644 internal/database/mq/client.go create mode 100644 internal/database/mq/client_test.go create mode 100644 internal/database/mq/consume.go create mode 100644 internal/database/mq/opt.go create mode 100644 internal/database/mq/publish.go create mode 100644 internal/database/nebula/client.go create mode 100644 internal/handler/log.go create mode 100644 internal/handler/user.go create mode 100644 internal/interfaces/database.go create mode 100644 internal/interfaces/enum.go create mode 100644 internal/interfaces/logger.go create mode 100644 internal/invoke/client.go create mode 100644 internal/invoke/resolve.go create mode 100644 internal/invoke/resolve_v2.go create mode 100644 internal/invoke/retry.go create mode 100644 internal/log/log.go create mode 100644 internal/middleware/auth/auth.go create mode 100644 internal/middleware/front/dist/front/3rdpartylicenses.txt create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-152x152.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-192x192.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-512x512.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png create mode 100644 internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png create mode 100644 internal/middleware/front/dist/front/browser/favicon.ico create mode 100644 internal/middleware/front/dist/front/browser/index.html create mode 100644 internal/middleware/front/dist/front/browser/main-CLMZMBYY.js create mode 100644 internal/middleware/front/dist/front/browser/manifest.webmanifest create mode 100755 internal/middleware/front/dist/front/browser/ngsw-worker.js create mode 100644 internal/middleware/front/dist/front/browser/ngsw.json create mode 100644 internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js create mode 100755 internal/middleware/front/dist/front/browser/safety-worker.js create mode 100644 internal/middleware/front/dist/front/browser/styles-NJ66DI6F.css create mode 100755 internal/middleware/front/dist/front/browser/worker-basic.min.js create mode 100644 internal/middleware/front/front.go create mode 100644 internal/middleware/logger/logger.go create mode 100644 internal/middleware/oplog/new.go create mode 100644 internal/middleware/oplog/oplog.go create mode 100644 internal/middleware/privilege/privilege.go create mode 100644 internal/model/init.go create mode 100644 internal/model/interface.go create mode 100644 internal/model/oplog.go create mode 100644 internal/model/privilege.go create mode 100644 internal/model/role.go create mode 100644 internal/model/user.go create mode 100644 internal/opt/opt.go create mode 100644 internal/opt/var.go create mode 100644 internal/sqlType/err.go create mode 100644 internal/sqlType/jsonb.go create mode 100644 internal/sqlType/nullStr.go create mode 100644 internal/sqlType/set.go create mode 100644 internal/sqlType/strSlice.go create mode 100644 internal/sqlType/uint64Slice.go create mode 100644 internal/tool/ctx.go create mode 100644 internal/tool/human.go create mode 100644 internal/tool/must.go create mode 100644 internal/tool/password.go create mode 100644 internal/tool/password_test.go create mode 100644 internal/tool/random.go create mode 100644 internal/tool/table.go create mode 100644 internal/tool/tools.go create mode 100644 main.go create mode 100644 readme.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb8c3b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea +.vscode +.DS_Store +.data +*.sqlite +*.sqlite3 +xtest \ No newline at end of file diff --git a/.nfctl b/.nfctl new file mode 100644 index 0000000..190f1d6 --- /dev/null +++ b/.nfctl @@ -0,0 +1,27 @@ +# nfctl init script +# https://github.com/loveuer/nf/nft/nfctl + +# 替换 import +!replace content +suffix *.go +ultone => {{.PROJECT_NAME}} +EOF + +# 替换 go module name +!replace content +exact go.mod +module ultone => module {{.PROJECT_NAME}} +EOF + +# 生成 readme +!generate +readme.md +# {{.PROJECT_NAME}} + +### Run +- `go run . --help` +- `go run .` + +### Build +- `docker build -t {repo:tag} -f Dockerfile .` +EOF diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..22697cb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +#FROM golang:1.20-alpine AS builder +FROM repository.umisen.com/external/golang:latest AS builder + +ENV GO111MODULE on +ENV CGO_ENABLED 0 +ENV GOOS linux +ENV GOPROXY https://goproxy.io + +WORKDIR /build + +COPY . . + +RUN go mod download +RUN go build -ldflags '-s -w' -o server . + +#FROM alpine:latest +FROM repository.umisen.com/external/alpine:latest + +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && apk add curl + +ENV TZ Asia/Shanghai + +WORKDIR /app + +RUN mkdir -p /data + +COPY --from=builder /build/server /app/server +COPY etc /app/etc + +CMD ["/app/server", "-c", "/app/etc/config.json"] diff --git a/deployment/database.dev.yml b/deployment/database.dev.yml new file mode 100644 index 0000000..36a7711 --- /dev/null +++ b/deployment/database.dev.yml @@ -0,0 +1,56 @@ +version: "3.9" + +services: + redis: + image: "repository.umisen.com/external/redis:latest" + container_name: redis + restart: unless-stopped + volumes: + - .data/redis:/data + ports: + - "6379:6379" + + pgsql: + image: "repository.umisen.com/external/postgres:latest" + container_name: pgsql + restart: unless-stopped + environment: + POSTGRES_USER: ult + POSTGRES_PASSWORD: ult@sonar + POSTGRES_DB: ult + PGDATA: /var/lib/postgresql/data + volumes: + - .data/pgsql:/var/lib/postgresql + ports: + - "5432:5432" + + es: + image: "repository.umisen.com/external/es:latest" + container_name: es + restart: unless-stopped + environment: + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms1g -Xmx1g" + - discovery.type=single-node + ulimits: + nproc: 65535 + memlock: + soft: -1 + hard: -1 + deploy: + resources: + limits: + cpus: '1' + memory: 1G + ports: + - 9200:9200 + + kibana: + image: "repository.umisen.com/external/kibana:latest" + container_name: kibana + restart: unless-stopped + environment: + ELASTICSEARCH_HOSTS: http://elk_es:9200 + I18N_LOCALE: zh-CN + ports: + - 5601:5601 \ No newline at end of file diff --git a/deployment/run.sh b/deployment/run.sh new file mode 100644 index 0000000..a0c5cdc --- /dev/null +++ b/deployment/run.sh @@ -0,0 +1,8 @@ +#/bin/bash + +VERSION="v$(date +'%y.%m.%d')-r1" +echo "version: $VERSION" + +docker build -t repository.umisen.com/{project_folder}/{project_name}:$VERSION -f Dockerfile . +docker push repository.umisen.com/{project_folder}/{project_name}:$VERSION +docker start -d --name {your_project_name} --restart unless-stopped -p xx_port:xx_port -v xx_path:xx_path repository.umisen.com/{project_folder}/{project_name}:$VERSION \ No newline at end of file diff --git a/etc/config.json b/etc/config.json new file mode 100644 index 0000000..bb2e5a3 --- /dev/null +++ b/etc/config.json @@ -0,0 +1,27 @@ +{ + "name": "ult", + "listen": { + "http": "0.0.0.0:8080" + }, + "db": { + "_uri": "postgres::host=pg.dev user=xx_user password=xx_password dbname=xx_database port=5432 sslmode=disable TimeZone=Asia/Shanghai", + "uri": "sqlite::db.sqlite3" + }, + "cache": { + "uri": "lru::", + "_uri": "memory::", + "__uri": "redis::u:p@redis.dev:6379" + }, + "es": { + "uri": "http://es.dev:9200", + "index": { + "staff": "some_staff" + } + }, + "nebula": { + "uri": "nebula.1.dev:9669,nebula.2.dev:9669", + "space": "test_space", + "username": "admin", + "password": "password" + } +} \ No newline at end of file diff --git a/front/.editorconfig b/front/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/front/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/front/.gitignore b/front/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/front/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/front/README.md b/front/README.md new file mode 100644 index 0000000..e660992 --- /dev/null +++ b/front/README.md @@ -0,0 +1,27 @@ +# Front + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/front/angular.json b/front/angular.json new file mode 100644 index 0000000..806cf0a --- /dev/null +++ b/front/angular.json @@ -0,0 +1,113 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "cli": { + "packageManager": "pnpm", + "analytics": false + }, + "newProjectRoot": "projects", + "projects": { + "front": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/front", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all", + "serviceWorker": "ngsw-config.json" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "proxyConfig": "src/proxy.conf.json" + }, + "configurations": { + "production": { + "buildTarget": "front:build:production" + }, + "development": { + "buildTarget": "front:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "front:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/front/ngsw-config.json b/front/ngsw-config.json new file mode 100644 index 0000000..4d80eea --- /dev/null +++ b/front/ngsw-config.json @@ -0,0 +1,30 @@ +{ + "$schema": "./node_modules/@angular/service-worker/config/schema.json", + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/manifest.webmanifest", + "/*.css", + "/*.js" + ] + } + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": [ + "/assets/**", + "/media/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" + ] + } + } + ] +} diff --git a/front/package.json b/front/package.json new file mode 100644 index 0000000..1383b14 --- /dev/null +++ b/front/package.json @@ -0,0 +1,44 @@ +{ + "name": "front", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^18.0.2", + "@angular/cdk": "18.0.2", + "@angular/common": "^18.0.2", + "@angular/compiler": "^18.0.2", + "@angular/core": "^18.0.2", + "@angular/forms": "^18.0.2", + "@angular/material": "18.0.2", + "@angular/platform-browser": "^18.0.2", + "@angular/platform-browser-dynamic": "^18.0.2", + "@angular/router": "^18.0.2", + "@angular/service-worker": "^18.0.2", + "base-64": "^1.0.0", + "js-base64": "^3.7.6", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^18.0.3", + "@angular/cli": "^18.0.3", + "@angular/compiler-cli": "^18.0.2", + "@types/jasmine": "~5.1.0", + "html5-qrcode": "^2.3.8", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.4.5" + } +} \ No newline at end of file diff --git a/front/pnpm-lock.yaml b/front/pnpm-lock.yaml new file mode 100644 index 0000000..f8c53e0 --- /dev/null +++ b/front/pnpm-lock.yaml @@ -0,0 +1,9818 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@angular/animations': + specifier: ^18.0.2 + version: 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@angular/cdk': + specifier: 18.0.2 + version: 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/common': + specifier: ^18.0.2 + version: 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/compiler': + specifier: ^18.0.2 + version: 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@angular/core': + specifier: ^18.0.2 + version: 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/forms': + specifier: ^18.0.2 + version: 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0) + '@angular/material': + specifier: 18.0.2 + version: 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/cdk@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/forms@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0) + '@angular/platform-browser': + specifier: ^18.0.2 + version: 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@angular/platform-browser-dynamic': + specifier: ^18.0.2 + version: 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))) + '@angular/router': + specifier: ^18.0.2 + version: 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0) + '@angular/service-worker': + specifier: ^18.0.2 + version: 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + base-64: + specifier: ^1.0.0 + version: 1.0.0 + js-base64: + specifier: ^3.7.6 + version: 3.7.6 + rxjs: + specifier: ~7.8.0 + version: 7.8.0 + tslib: + specifier: ^2.3.0 + version: 2.3.0 + zone.js: + specifier: ~0.14.2 + version: 0.14.2 + devDependencies: + '@angular-devkit/build-angular': + specifier: ^18.0.3 + version: 18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(@angular/service-worker@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@types/node@20.11.6)(chokidar@3.6.0)(karma@6.4.0)(typescript@5.4.5) + '@angular/cli': + specifier: ^18.0.3 + version: 18.0.3(chokidar@3.6.0) + '@angular/compiler-cli': + specifier: ^18.0.2 + version: 18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5) + '@types/jasmine': + specifier: ~5.1.0 + version: 5.1.0 + html5-qrcode: + specifier: ^2.3.8 + version: 2.3.8 + jasmine-core: + specifier: ~5.1.0 + version: 5.1.0 + karma: + specifier: ~6.4.0 + version: 6.4.0 + karma-chrome-launcher: + specifier: ~3.2.0 + version: 3.2.0 + karma-coverage: + specifier: ~2.2.0 + version: 2.2.0 + karma-jasmine: + specifier: ~5.1.0 + version: 5.1.0(karma@6.4.0) + karma-jasmine-html-reporter: + specifier: ~2.1.0 + version: 2.1.0(jasmine-core@5.1.0)(karma-jasmine@5.1.0(karma@6.4.0))(karma@6.4.0) + typescript: + specifier: ~5.4.5 + version: 5.4.5 + +packages: + + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@angular-devkit/architect@0.1800.3': + resolution: {integrity: sha512-ZoQuvCN/Ft4XJ+/XouYFKGoyEYTfZ8I5yI1M4t19lkRb3MwpQribWcZu4PP+SNnS6/9qnW7guxiQGS+CVlqnDg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + + '@angular-devkit/build-angular@18.0.3': + resolution: {integrity: sha512-TTYPtQPqpI7V5H44oBqpPCYjwycWplOfhx/rjxDcrdGITYJF18rzwJs6mFx2QMBZl+99YYhxDajRCq05UDRQrw==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^18.0.0 + '@angular/localize': ^18.0.0 + '@angular/platform-server': ^18.0.0 + '@angular/service-worker': ^18.0.0 + '@web/test-runner': ^0.18.0 + browser-sync: ^3.0.2 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^18.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=5.4 <5.5' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + '@web/test-runner': + optional: true + browser-sync: + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + + '@angular-devkit/build-webpack@0.1800.3': + resolution: {integrity: sha512-qasDZI28gNsYTOWwJHoFZlVAyw47qlCXbPEma0VDCukZe5XX8RoZnN5ZA9nC8xpqKQ5pzJnPk7rAqa0dsEt9Xg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^5.0.2 + + '@angular-devkit/core@18.0.3': + resolution: {integrity: sha512-nTs1KbNSVCVooPdDaeTh1YbggNVaqexbQjXNIvJJzRB8qPkWNPxm0pQeFjU7kWUBg2+aBXN4/CNwU1YHwxfiSQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + + '@angular-devkit/schematics@18.0.3': + resolution: {integrity: sha512-utKGk9KHTvLsxpga3aaGJ7HDggMhZtBOHFb8phFK/GXazaeEGDvm7Sin2it2uw/i9xvu79RQ/IrWvebhanwU1g==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + + '@angular/animations@18.0.2': + resolution: {integrity: sha512-WhsotLl74UlRZZE9R7X3BXeNm1YOD1hUMOuGCa20pvUZ8X6ayz5c8B7tc/BZ0ua/9UkyZzbdMTEDi8JPDPPTew==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 18.0.2 + + '@angular/build@18.0.3': + resolution: {integrity: sha512-AvyySRuNkmnMxKcoPs6NuddLaCVUWnoGnPmqqd1YY3mT/yxShorIZyrJ1loxzveIcgFJ65qDPGPhIfK7KxysYQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^18.0.0 + '@angular/localize': ^18.0.0 + '@angular/platform-server': ^18.0.0 + '@angular/service-worker': ^18.0.0 + less: ^4.2.0 + postcss: ^8.4.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=5.4 <5.5' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + less: + optional: true + postcss: + optional: true + tailwindcss: + optional: true + + '@angular/cdk@18.0.2': + resolution: {integrity: sha512-KQTfi17PV/DYg8UcsoF9Jxfz+3nCPImm5eY1Mq7wGK8qUOlw9Y8fZ3eNU9ZH4hdg2FcKXJrAJqSA7I2nqdSX7w==} + peerDependencies: + '@angular/common': ^18.0.0 || ^19.0.0 + '@angular/core': ^18.0.0 || ^19.0.0 + rxjs: ^6.5.3 || ^7.4.0 + + '@angular/cli@18.0.3': + resolution: {integrity: sha512-1i51QeLwLpIdBbwOANSLFAuqXOGRpvSHCuZo1SojkvZ1COZ5jJZoCaKRZzCFsA/16gv/jcTEfBGpoAXLC2lRog==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + + '@angular/common@18.0.2': + resolution: {integrity: sha512-7CK5sFptUFWE3ZrKl8MjgoKjYKC20SN089F4xQIYtP2qM3IoJH/X7qa+5Eidk4PovS1SuCJHrB5AoREWwtWJHA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 18.0.2 + rxjs: ^6.5.3 || ^7.4.0 + + '@angular/compiler-cli@18.0.2': + resolution: {integrity: sha512-+HIYJ0WIAg75mS30KzCN9gO2SeZXF4A8CeKOwBKhIvlq9kkaTpgmpDkVx814e9z3OeIqCEUn10qebJTwZgtZDA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/compiler': 18.0.2 + typescript: '>=5.4 <5.5' + + '@angular/compiler@18.0.2': + resolution: {integrity: sha512-9PKi++yKq3SvsTteZAhAJsiueEWzl64SpIBwooWRaSav6Jfl9Y2+b46SXTdAIuNdcGNW7ZeDZbPK3RPtxsROrA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 18.0.2 + peerDependenciesMeta: + '@angular/core': + optional: true + + '@angular/core@18.0.2': + resolution: {integrity: sha512-5VtFaYz97X9sQpxRuFUBKu2gqgFVU/Obgk/Q8ZRw+TBhFnU4e9NFod7dtAJH9scCOWZYnU07+aeI6ChiRSKrZw==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.14.0 + + '@angular/forms@18.0.2': + resolution: {integrity: sha512-AGuQVav7wbX6pRhjeE6c45dlWnhb+93ZHHBRT02Wg1PRyrgmebpoLAtiUmAR/YhR45zD6Q9o7fg/076+bnIcdQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 18.0.2 + '@angular/core': 18.0.2 + '@angular/platform-browser': 18.0.2 + rxjs: ^6.5.3 || ^7.4.0 + + '@angular/material@18.0.2': + resolution: {integrity: sha512-bns6X6HAonBnj+I0QkbqfD4u5ehs8HZP3ateb19ZbfhVLJEu0MB/AJfeM3cinPrQnTMdYBjIDTtIyQWh//EFiw==} + peerDependencies: + '@angular/animations': ^18.0.0 || ^19.0.0 + '@angular/cdk': 18.0.2 + '@angular/common': ^18.0.0 || ^19.0.0 + '@angular/core': ^18.0.0 || ^19.0.0 + '@angular/forms': ^18.0.0 || ^19.0.0 + '@angular/platform-browser': ^18.0.0 || ^19.0.0 + rxjs: ^6.5.3 || ^7.4.0 + + '@angular/platform-browser-dynamic@18.0.2': + resolution: {integrity: sha512-wQlw3TgUEs5uZRT6mPIKFHCgOBDE4joar9b/0bjZv5SOUvJNkED+roNlRKxjQDIagOMAUlcD3OnynlNr6le6YA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 18.0.2 + '@angular/compiler': 18.0.2 + '@angular/core': 18.0.2 + '@angular/platform-browser': 18.0.2 + + '@angular/platform-browser@18.0.2': + resolution: {integrity: sha512-IdNyRMFtM5GCvueNFrXmwA1C5LUMi6aSccdA1fpsTFAGDleeT5oiKU82iIcVmdj+Kse233KQFU0HFyijy4W2/Q==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/animations': 18.0.2 + '@angular/common': 18.0.2 + '@angular/core': 18.0.2 + peerDependenciesMeta: + '@angular/animations': + optional: true + + '@angular/router@18.0.2': + resolution: {integrity: sha512-eIualVChd3bMA8GjKfAKL9wv7zKWx85Cu3b1qhUxrG3XyT40X1ud2GRHBKCuklUITcAR8HjUKnWuOjUDkhTT4Q==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 18.0.2 + '@angular/core': 18.0.2 + '@angular/platform-browser': 18.0.2 + rxjs: ^6.5.3 || ^7.4.0 + + '@angular/service-worker@18.0.2': + resolution: {integrity: sha512-Ymymai6lCZB0enx8sDPNK/W7ewtnsG0vDIOjgAl8pmPyRNWFwsWnVaS5eWrKdhWc5z2R4T0ujb7SswgVq8wPJg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/common': 18.0.2 + '@angular/core': 18.0.2 + + '@babel/code-frame@7.23.5': + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.23.5': + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.23.9': + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.4': + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.5': + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.23.6': + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.5': + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.7': + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.24.7': + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.7': + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.22.5': + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.5': + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.23.4': + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.23.9': + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.23.4': + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.23.9': + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.24.3': + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.1': + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.24.7': + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.24.7': + resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.7': + resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.24.7': + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.24.7': + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.7': + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.24.7': + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.7': + resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.3': + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.7': + resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.24.5': + resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime@7.24.5': + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.23.9': + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.23.9': + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.23.9': + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.21.3': + resolution: {integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.3': + resolution: {integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.3': + resolution: {integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.3': + resolution: {integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.3': + resolution: {integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.3': + resolution: {integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.3': + resolution: {integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.3': + resolution: {integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.3': + resolution: {integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.3': + resolution: {integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.3': + resolution: {integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.3': + resolution: {integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.3': + resolution: {integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.3': + resolution: {integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.3': + resolution: {integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.3': + resolution: {integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.3': + resolution: {integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.3': + resolution: {integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.3': + resolution: {integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.3': + resolution: {integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.3': + resolution: {integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.3': + resolution: {integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.3': + resolution: {integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@inquirer/figures@1.0.3': + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} + engines: {node: '>=18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.5': + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.22': + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.0.4': + resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.1.3': + resolution: {integrity: sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@leichtgewicht/ip-codec@2.0.4': + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + + '@ljharb/through@2.3.13': + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + + '@lmdb/lmdb-darwin-arm64@3.0.8': + resolution: {integrity: sha512-+lFwFvU+zQ9zVIFETNtmW++syh3Ps5JS8MPQ8zOYtQZoU+dTR8ivWHTaE2QVk1JG2payGDLUAvpndLAjGMdeeA==} + cpu: [arm64] + os: [darwin] + + '@lmdb/lmdb-darwin-x64@3.0.8': + resolution: {integrity: sha512-T98rfsgfdQMS5/mqdsPb6oHSJ+iBYNa+PQDLtXLh6rzTEBsYP9x2uXxIj6VS4qXVDWXVi8rv85NCOG+UBOsHXQ==} + cpu: [x64] + os: [darwin] + + '@lmdb/lmdb-linux-arm64@3.0.8': + resolution: {integrity: sha512-uEBGCQIChsixpykL0pjCxfF64btv64vzsb1NoM5u0qvabKvKEvErhXGoqovyldDu9u1T/fswD8Kf6ih0vJEvDQ==} + cpu: [arm64] + os: [linux] + + '@lmdb/lmdb-linux-arm@3.0.8': + resolution: {integrity: sha512-gVNCi3bYWatdPMeFpFjuZl6bzVL55FkeZU3sPeU+NsMRXC+Zl3qOx3M6cM4OMlJWbhHjYjf2b8q83K0mczaiWQ==} + cpu: [arm] + os: [linux] + + '@lmdb/lmdb-linux-x64@3.0.8': + resolution: {integrity: sha512-6v0B4sa9ulNezmDZtVpLjNHmA0qZzUl3001YJ2RF0naxsuv/Jq/xEwNYpOzfcdizHfpCE0oBkWzk/r+Slr+0zw==} + cpu: [x64] + os: [linux] + + '@lmdb/lmdb-win32-x64@3.0.8': + resolution: {integrity: sha512-lDLGRIMqdwYD39vinwNqqZUxCdL2m2iIdn+0HyQgIHEiT0g5rIAlzaMKzoGWon5NQumfxXFk9y0DarttkR7C1w==} + cpu: [x64] + os: [win32] + + '@material/animation@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==} + + '@material/auto-init@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==} + + '@material/banner@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==} + + '@material/base@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==} + + '@material/button@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==} + + '@material/card@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==} + + '@material/checkbox@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==} + + '@material/chips@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==} + + '@material/circular-progress@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==} + + '@material/data-table@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==} + + '@material/density@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==} + + '@material/dialog@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==} + + '@material/dom@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==} + + '@material/drawer@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==} + + '@material/elevation@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==} + + '@material/fab@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==} + + '@material/feature-targeting@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==} + + '@material/floating-label@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==} + + '@material/focus-ring@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==} + + '@material/form-field@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==} + + '@material/icon-button@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==} + + '@material/image-list@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==} + + '@material/layout-grid@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==} + + '@material/line-ripple@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==} + + '@material/linear-progress@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==} + + '@material/list@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==} + + '@material/menu-surface@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==} + + '@material/menu@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==} + + '@material/notched-outline@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==} + + '@material/progress-indicator@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==} + + '@material/radio@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==} + + '@material/ripple@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==} + + '@material/rtl@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==} + + '@material/segmented-button@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==} + + '@material/select@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==} + + '@material/shape@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==} + + '@material/slider@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==} + + '@material/snackbar@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==} + + '@material/switch@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==} + + '@material/tab-bar@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==} + + '@material/tab-indicator@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==} + + '@material/tab-scroller@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==} + + '@material/tab@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==} + + '@material/textfield@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==} + + '@material/theme@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==} + + '@material/tokens@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==} + + '@material/tooltip@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==} + + '@material/top-app-bar@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==} + + '@material/touch-target@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==} + + '@material/typography@15.0.0-canary.7f224ddd4.0': + resolution: {integrity: sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@ngtools/webpack@18.0.3': + resolution: {integrity: sha512-wYskgAomDgyBJ8fsP+jfb0rt1t5OpNx4EXEzZo37Nxb04P5CkW+9yQ/xuhPMF8hO/dfKL1k/BKAKUeOOUQmAIA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^18.0.0 + typescript: '>=5.4 <5.5' + webpack: ^5.54.0 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/agent@2.2.0': + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/fs@3.1.0': + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/git@5.0.4': + resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/installed-package-contents@2.0.2': + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + '@npmcli/node-gyp@3.0.0': + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@5.2.0': + resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/promise-spawn@7.0.1': + resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/redact@2.0.1': + resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/run-script@8.1.0': + resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@schematics/angular@18.0.3': + resolution: {integrity: sha512-ApiDJRmcl5Kc5862Ay9RWy96c8hlkf8ELjiBj+SQCAObXTne0NJH2596ckYTkqIRI9yC/8tfolDMJih5i1jwOA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + + '@sigstore/bundle@2.1.1': + resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/core@0.2.0': + resolution: {integrity: sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/protobuf-specs@0.2.1': + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@sigstore/sign@2.2.1': + resolution: {integrity: sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/tuf@2.3.0': + resolution: {integrity: sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/verify@0.1.0': + resolution: {integrity: sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@socket.io/component-emitter@3.1.0': + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@tufjs/models@2.0.0': + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.2': + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.17.42': + resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.14': + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + + '@types/jasmine@5.1.0': + resolution: {integrity: sha512-XOV0KsqXNX2gUSqk05RWeolIMgaAQ7+l/ozOBoQ8NGwLg+E7J9vgagODtNgfim4jCzEUP0oJ3gnXeC+Zv+Xi1A==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/mime@3.0.4': + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@20.11.6': + resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} + + '@types/qs@6.9.11': + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.5': + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + + '@vitejs/plugin-basic-ssl@1.1.0': + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + babel-loader@9.1.3: + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacache@18.0.2: + resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} + engines: {node: ^16.14.0 || >=18.0.0} + + call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001580: + resolution: {integrity: sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==} + + caniuse-lite@1.0.30001632: + resolution: {integrity: sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-webpack-plugin@11.0.0: + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + + core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + critters@0.0.22: + resolution: {integrity: sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-loader@7.1.1: + resolution: {integrity: sha512-OxIR5P2mjO1PSXk44bWuQ8XtMK4dpEqpIyERCx3ewOo3I8EmbcxMPUc5ScLtQfgXtOojoMv57So4V/C02HQLsw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + custom-event@1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + + date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + di@0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + dom-serialize@2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.646: + resolution: {integrity: sha512-vThkQ0JuF45qT/20KbRgM56lV7IuGt7SjhawQ719PDHzhP84KAO1WJoaxgCoAffKHK47FmVKP1Fqizx7CwK1SA==} + + electron-to-chromium@1.4.798: + resolution: {integrity: sha512-by9J2CiM9KPGj9qfp5U4FcPSbXJG7FNzqnYaY4WLzX+v2PHieVGmnsA4dxfpGE3QEC7JofpPZmn7Vn1B9NR2+Q==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + engine.io-parser@5.2.1: + resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + engines: {node: '>=10.0.0'} + + engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + + ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + esbuild-wasm@0.21.3: + resolution: {integrity: sha512-DMOV+eeVra0yVq3XIojfczdEQsz+RiFnpEj7lqs8Gux9mlTpN7yIbw0a4KzLspn0Uhw6UVEH3nUAidSqc/rcQg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.3: + resolution: {integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + + hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html5-qrcode@2.3.8: + resolution: {integrity: sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + + http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + + http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy-middleware@3.0.0: + resolution: {integrity: sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.2: + resolution: {integrity: sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@9.2.22: + resolution: {integrity: sha512-SqLLa/Oe5rZUagTR9z+Zd6izyatHglbmbvVofo1KzuVB54YHleWzeHNLoR7FOICGOeQSqeLh1cordb3MzhGcEw==} + engines: {node: '>=18'} + + ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-network-error@1.1.0: + resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + engines: {node: '>=16'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jasmine-core@4.6.0: + resolution: {integrity: sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==} + + jasmine-core@5.1.0: + resolution: {integrity: sha512-bFMMwpKuTZXCuGd51yClFobw5SOtad1kmdWnYO8dNwYV8i01Xj0C2+nyQpSKl1EKxiPfyd1ZgBl/rsusL3aS6w==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + js-base64@3.7.6: + resolution: {integrity: sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + karma-chrome-launcher@3.2.0: + resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} + + karma-coverage@2.2.0: + resolution: {integrity: sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==} + engines: {node: '>=10.0.0'} + + karma-jasmine-html-reporter@2.1.0: + resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + peerDependencies: + jasmine-core: ^4.0.0 || ^5.0.0 + karma: ^6.0.0 + karma-jasmine: ^5.0.0 + + karma-jasmine@5.1.0: + resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} + engines: {node: '>=12'} + peerDependencies: + karma: ^6.0.0 + + karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + + karma@6.4.0: + resolution: {integrity: sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==} + engines: {node: '>= 10'} + hasBin: true + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + + less-loader@12.2.0: + resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + + license-webpack-plugin@4.0.2: + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lmdb@3.0.8: + resolution: {integrity: sha512-9rp8JT4jPhCRJUL7vRARa2N06OLSYzLwQsEkhC6Qu5XbcLyM/XBLMzDlgS/K7l7c5CdURLdDk9uE+hPFIogHTQ==} + hasBin: true + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@4.9.2: + resolution: {integrity: sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==} + engines: {node: '>= 4.0.0'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mini-css-extract-plugin@2.9.0: + resolution: {integrity: sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.10.2: + resolution: {integrity: sha512-L60rsPynBvNE+8BWipKKZ9jHcSGbtyJYIwjRq0VrIvQ08cRjntGXJYW/tmciZ2IHWIY8WEW32Qa2xbh5+SKBZA==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nice-napi@1.0.2: + resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} + os: ['!win32'] + + node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build-optional-packages@5.1.1: + resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} + hasBin: true + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + + node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-package-arg@11.0.2: + resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-packlist@8.0.2: + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-pick-manifest@9.0.1: + resolution: {integrity: sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-registry-fetch@17.0.1: + resolution: {integrity: sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ordered-binary@1.5.1: + resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-retry@6.2.0: + resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} + engines: {node: '>=16.17'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pacote@18.0.6: + resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5-html-rewriting-stream@7.0.0: + resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + + parse5-sax-parser@7.0.0: + resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + piscina@4.5.0: + resolution: {integrity: sha512-iBaLWI56PFP81cfBSomWTmhOo9W2/yhIOL+Tk8O1vBCpK39cM0tGxB+wgYjG31qq4ohGvysfXSdnj8h7g4rZxA==} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + postcss-loader@8.1.1: + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qjobs@1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} + hasBin: true + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + safevalues@0.3.4: + resolution: {integrity: sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==} + + sass-loader@14.2.1: + resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + + sass@1.77.2: + resolution: {integrity: sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sigstore@2.2.0: + resolution: {integrity: sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==} + engines: {node: ^16.14.0 || >=18.0.0} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + + socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + + sonic-forest@1.0.3: + resolution: {integrity: sha512-dtwajos6IWMEWXdEbW1IkEkyL2gztCAgDplRIX+OT5aRKnEd5e7r7YCxRgXZdhRP1FBdOBf8axeTPhzDv8T4wQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-loader@5.0.0: + resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.72.1 + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tree-dump@1.0.1: + resolution: {integrity: sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tuf-js@2.2.0: + resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} + engines: {node: ^16.14.0 || >=18.0.0} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@0.7.37: + resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@6.18.0: + resolution: {integrity: sha512-nT8jjv/fE9Et1ilR6QoW8ingRTY2Pp4l2RUrdzV5Yz35RJDrtPc1DXvuNqcpsJSGIRHFdt3YKKktTzJA6r0fTA==} + engines: {node: '>=18.17'} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@5.2.11: + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + void-elements@2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + weak-lru-cache@1.2.2: + resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + + webpack-dev-middleware@7.2.1: + resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-subresource-integrity@5.1.0: + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + + webpack@5.91.0: + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zone.js@0.14.2: + resolution: {integrity: sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ==} + +snapshots: + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@angular-devkit/architect@0.1800.3(chokidar@3.6.0)': + dependencies: + '@angular-devkit/core': 18.0.3(chokidar@3.6.0) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + + '@angular-devkit/build-angular@18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(@angular/service-worker@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@types/node@20.11.6)(chokidar@3.6.0)(karma@6.4.0)(typescript@5.4.5)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.1800.3(chokidar@3.6.0) + '@angular-devkit/build-webpack': 0.1800.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.91.0))(webpack@5.91.0(esbuild@0.21.3)) + '@angular-devkit/core': 18.0.3(chokidar@3.6.0) + '@angular/build': 18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(@angular/service-worker@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@types/node@20.11.6)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.4.5) + '@angular/compiler-cli': 18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5) + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/runtime': 7.24.5 + '@discoveryjs/json-ext': 0.5.7 + '@ngtools/webpack': 18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.91.0(esbuild@0.21.3)) + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0)) + ansi-colors: 4.1.3 + autoprefixer: 10.4.19(postcss@8.4.38) + babel-loader: 9.1.3(@babel/core@7.24.5)(webpack@5.91.0(esbuild@0.21.3)) + babel-plugin-istanbul: 6.1.1 + browserslist: 4.22.2 + copy-webpack-plugin: 11.0.0(webpack@5.91.0(esbuild@0.21.3)) + critters: 0.0.22 + css-loader: 7.1.1(webpack@5.91.0(esbuild@0.21.3)) + esbuild-wasm: 0.21.3 + fast-glob: 3.3.2 + http-proxy-middleware: 3.0.0 + https-proxy-agent: 7.0.4 + inquirer: 9.2.22 + jsonc-parser: 3.2.1 + karma-source-map-support: 1.4.0 + less: 4.2.0 + less-loader: 12.2.0(less@4.2.0)(webpack@5.91.0(esbuild@0.21.3)) + license-webpack-plugin: 4.0.2(webpack@5.91.0(esbuild@0.21.3)) + loader-utils: 3.2.1 + magic-string: 0.30.10 + mini-css-extract-plugin: 2.9.0(webpack@5.91.0(esbuild@0.21.3)) + mrmime: 2.0.0 + open: 8.4.2 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.2 + piscina: 4.5.0 + postcss: 8.4.38 + postcss-loader: 8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0(esbuild@0.21.3)) + resolve-url-loader: 5.0.0 + rxjs: 7.8.1 + sass: 1.77.2 + sass-loader: 14.2.1(sass@1.77.2)(webpack@5.91.0(esbuild@0.21.3)) + semver: 7.6.2 + source-map-loader: 5.0.0(webpack@5.91.0(esbuild@0.21.3)) + source-map-support: 0.5.21 + terser: 5.31.0 + tree-kill: 1.2.2 + tslib: 2.6.2 + typescript: 5.4.5 + undici: 6.18.0 + vite: 5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0) + watchpack: 2.4.1 + webpack: 5.91.0(esbuild@0.21.3) + webpack-dev-middleware: 7.2.1(webpack@5.91.0) + webpack-dev-server: 5.0.4(webpack@5.91.0) + webpack-merge: 5.10.0 + webpack-subresource-integrity: 5.1.0(webpack@5.91.0(esbuild@0.21.3)) + optionalDependencies: + '@angular/service-worker': 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + esbuild: 0.21.3 + karma: 6.4.0 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@angular-devkit/build-webpack@0.1800.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.91.0))(webpack@5.91.0(esbuild@0.21.3))': + dependencies: + '@angular-devkit/architect': 0.1800.3(chokidar@3.6.0) + rxjs: 7.8.1 + webpack: 5.91.0(esbuild@0.21.3) + webpack-dev-server: 5.0.4(webpack@5.91.0) + transitivePeerDependencies: + - chokidar + + '@angular-devkit/core@18.0.3(chokidar@3.6.0)': + dependencies: + ajv: 8.13.0 + ajv-formats: 3.0.1(ajv@8.13.0) + jsonc-parser: 3.2.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + optionalDependencies: + chokidar: 3.6.0 + + '@angular-devkit/schematics@18.0.3(chokidar@3.6.0)': + dependencies: + '@angular-devkit/core': 18.0.3(chokidar@3.6.0) + jsonc-parser: 3.2.1 + magic-string: 0.30.10 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + + '@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))': + dependencies: + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.6.2 + + '@angular/build@18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(@angular/service-worker@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@types/node@20.11.6)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.38)(terser@5.31.0)(typescript@5.4.5)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.1800.3(chokidar@3.6.0) + '@angular/compiler-cli': 18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5) + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0)) + ansi-colors: 4.1.3 + browserslist: 4.23.1 + critters: 0.0.22 + esbuild: 0.21.3 + fast-glob: 3.3.2 + https-proxy-agent: 7.0.4 + inquirer: 9.2.22 + lmdb: 3.0.8 + magic-string: 0.30.10 + mrmime: 2.0.0 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.2 + piscina: 4.5.0 + sass: 1.77.2 + semver: 7.6.2 + typescript: 5.4.5 + undici: 6.18.0 + vite: 5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0) + watchpack: 2.4.1 + optionalDependencies: + '@angular/service-worker': 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + less: 4.2.0 + postcss: 8.4.38 + transitivePeerDependencies: + - '@types/node' + - chokidar + - lightningcss + - stylus + - sugarss + - supports-color + - terser + + '@angular/cdk@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0)': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + rxjs: 7.8.0 + tslib: 2.6.2 + optionalDependencies: + parse5: 7.1.2 + + '@angular/cli@18.0.3(chokidar@3.6.0)': + dependencies: + '@angular-devkit/architect': 0.1800.3(chokidar@3.6.0) + '@angular-devkit/core': 18.0.3(chokidar@3.6.0) + '@angular-devkit/schematics': 18.0.3(chokidar@3.6.0) + '@schematics/angular': 18.0.3(chokidar@3.6.0) + '@yarnpkg/lockfile': 1.1.0 + ansi-colors: 4.1.3 + ini: 4.1.2 + inquirer: 9.2.22 + jsonc-parser: 3.2.1 + npm-package-arg: 11.0.2 + npm-pick-manifest: 9.0.1 + ora: 5.4.1 + pacote: 18.0.6 + resolve: 1.22.8 + semver: 7.6.2 + symbol-observable: 4.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - chokidar + - supports-color + + '@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0)': + dependencies: + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + rxjs: 7.8.0 + tslib: 2.6.2 + + '@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5)': + dependencies: + '@angular/compiler': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@babel/core': 7.24.4 + '@jridgewell/sourcemap-codec': 1.4.15 + chokidar: 3.5.3 + convert-source-map: 1.9.0 + reflect-metadata: 0.2.2 + semver: 7.5.4 + tslib: 2.6.2 + typescript: 5.4.5 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))': + dependencies: + tslib: 2.6.2 + optionalDependencies: + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + + '@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)': + dependencies: + rxjs: 7.8.0 + tslib: 2.6.2 + zone.js: 0.14.2 + + '@angular/forms@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0)': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + rxjs: 7.8.0 + tslib: 2.6.2 + + ? '@angular/material@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/cdk@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/forms@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0)' + : dependencies: + '@angular/animations': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@angular/cdk': 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/forms': 18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0) + '@angular/platform-browser': 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/auto-init': 15.0.0-canary.7f224ddd4.0 + '@material/banner': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/card': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/chips': 15.0.0-canary.7f224ddd4.0 + '@material/circular-progress': 15.0.0-canary.7f224ddd4.0 + '@material/data-table': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dialog': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/drawer': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/fab': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/form-field': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/image-list': 15.0.0-canary.7f224ddd4.0 + '@material/layout-grid': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/radio': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/segmented-button': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/slider': 15.0.0-canary.7f224ddd4.0 + '@material/snackbar': 15.0.0-canary.7f224ddd4.0 + '@material/switch': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-bar': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/textfield': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/tooltip': 15.0.0-canary.7f224ddd4.0 + '@material/top-app-bar': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + rxjs: 7.8.0 + tslib: 2.6.2 + + '@angular/platform-browser-dynamic@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/compiler': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + tslib: 2.6.2 + + '@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.6.2 + optionalDependencies: + '@angular/animations': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + + '@angular/router@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(@angular/platform-browser@18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(rxjs@7.8.0)': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 18.0.2(@angular/animations@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)) + rxjs: 7.8.0 + tslib: 2.6.2 + + '@angular/service-worker@18.0.2(@angular/common@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0))(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))': + dependencies: + '@angular/common': 18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2))(rxjs@7.8.0) + '@angular/core': 18.0.2(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.6.2 + + '@babel/code-frame@7.23.5': + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.0 + + '@babel/compat-data@7.23.5': {} + + '@babel/compat-data@7.24.7': {} + + '@babel/core@7.23.9': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.24.4': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.24.5': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.23.6': + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/generator@7.24.5': + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/generator@7.24.7': + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.23.6': + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-compilation-targets@7.24.7': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.7 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-member-expression-to-functions@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.23.9 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4)': + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-plugin-utils@7.22.5': {} + + '@babel/helper-plugin-utils@7.24.7': {} + + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.22.20 + + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.23.9 + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.23.9 + + '@babel/helper-split-export-declaration@7.24.5': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-string-parser@7.23.4': {} + + '@babel/helper-string-parser@7.24.7': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helper-validator-option@7.24.7': {} + + '@babel/helper-wrap-function@7.22.20': + dependencies: + '@babel/helper-function-name': 7.24.7 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/helpers@7.23.9': + dependencies: + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/highlight@7.23.4': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + '@babel/parser@7.23.9': + dependencies: + '@babel/types': 7.23.9 + + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.5) + '@babel/helper-split-export-declaration': 7.24.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/template': 7.24.7 + + '@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.5) + + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/preset-env@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/types': 7.24.7 + esutils: 2.0.3 + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.24.5': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.23.9': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/template@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/traverse@7.23.9': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.23.9': + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@babel/types@7.24.7': + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@colors/colors@1.5.0': {} + + '@discoveryjs/json-ext@0.5.7': {} + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/aix-ppc64@0.21.3': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.21.3': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-arm@0.21.3': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/android-x64@0.21.3': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.21.3': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.21.3': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.21.3': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.21.3': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.21.3': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-arm@0.21.3': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.21.3': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.21.3': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.21.3': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.21.3': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.21.3': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.21.3': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/linux-x64@0.21.3': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.21.3': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.21.3': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.21.3': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.21.3': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.21.3': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@esbuild/win32-x64@0.21.3': + optional: true + + '@inquirer/figures@1.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.22': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': + dependencies: + tslib: 2.6.2 + + '@jsonjoy.com/json-pack@1.0.4(tslib@2.6.2)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) + '@jsonjoy.com/util': 1.1.3(tslib@2.6.2) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.6.2) + tslib: 2.6.2 + + '@jsonjoy.com/util@1.1.3(tslib@2.6.2)': + dependencies: + tslib: 2.6.2 + + '@leichtgewicht/ip-codec@2.0.4': {} + + '@ljharb/through@2.3.13': + dependencies: + call-bind: 1.0.7 + + '@lmdb/lmdb-darwin-arm64@3.0.8': + optional: true + + '@lmdb/lmdb-darwin-x64@3.0.8': + optional: true + + '@lmdb/lmdb-linux-arm64@3.0.8': + optional: true + + '@lmdb/lmdb-linux-arm@3.0.8': + optional: true + + '@lmdb/lmdb-linux-x64@3.0.8': + optional: true + + '@lmdb/lmdb-win32-x64@3.0.8': + optional: true + + '@material/animation@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/auto-init@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/banner@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/base@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/button@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/card@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/checkbox@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/chips@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + + '@material/circular-progress@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/data-table@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/density@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/dialog@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/dom@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/drawer@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/elevation@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/fab@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/feature-targeting@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/floating-label@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/focus-ring@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + + '@material/form-field@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/icon-button@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/image-list@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/layout-grid@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/line-ripple@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/linear-progress@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/list@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/menu-surface@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/menu@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/notched-outline@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/progress-indicator@15.0.0-canary.7f224ddd4.0': + dependencies: + tslib: 2.6.2 + + '@material/radio@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/ripple@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/rtl@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/segmented-button@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/select@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/shape@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/slider@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/snackbar@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/switch@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + + '@material/tab-bar@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/tab-indicator@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/tab-scroller@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/tab@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/textfield@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/theme@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/tokens@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + + '@material/tooltip@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + + '@material/top-app-bar@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/touch-target@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@material/typography@15.0.0-canary.7f224ddd4.0': + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@ngtools/webpack@18.0.3(@angular/compiler-cli@18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.91.0(esbuild@0.21.3))': + dependencies: + '@angular/compiler-cli': 18.0.2(@angular/compiler@18.0.2(@angular/core@18.0.2(rxjs@7.8.0)(zone.js@0.14.2)))(typescript@5.4.5) + typescript: 5.4.5 + webpack: 5.91.0(esbuild@0.21.3) + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + + '@npmcli/agent@2.2.0': + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.2.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@3.1.0': + dependencies: + semver: 7.6.2 + + '@npmcli/git@5.0.4': + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.1 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.2 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + + '@npmcli/installed-package-contents@2.0.2': + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + + '@npmcli/node-gyp@3.0.0': {} + + '@npmcli/package-json@5.2.0': + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 4.2.0 + semver: 7.6.2 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@7.0.1': + dependencies: + which: 4.0.0 + + '@npmcli/redact@2.0.1': {} + + '@npmcli/run-script@8.1.0': + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.0.1 + proc-log: 4.2.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/rollup-android-arm-eabi@4.18.0': + optional: true + + '@rollup/rollup-android-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-x64@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@schematics/angular@18.0.3(chokidar@3.6.0)': + dependencies: + '@angular-devkit/core': 18.0.3(chokidar@3.6.0) + '@angular-devkit/schematics': 18.0.3(chokidar@3.6.0) + jsonc-parser: 3.2.1 + transitivePeerDependencies: + - chokidar + + '@sigstore/bundle@2.1.1': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + + '@sigstore/core@0.2.0': {} + + '@sigstore/protobuf-specs@0.2.1': {} + + '@sigstore/sign@2.2.1': + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@2.3.0': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/verify@0.1.0': + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + + '@socket.io/component-emitter@3.1.0': {} + + '@tufjs/canonical-json@2.0.0': {} + + '@tufjs/models@2.0.0': + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.11.6 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 20.11.6 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 4.17.42 + '@types/node': 20.11.6 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.11.6 + + '@types/cookie@0.4.1': {} + + '@types/cors@2.8.17': + dependencies: + '@types/node': 20.11.6 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + + '@types/eslint@8.56.2': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/express-serve-static-core@4.17.42': + dependencies: + '@types/node': 20.11.6 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.42 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.14': + dependencies: + '@types/node': 20.11.6 + + '@types/jasmine@5.1.0': {} + + '@types/json-schema@7.0.15': {} + + '@types/mime@1.3.5': {} + + '@types/mime@3.0.4': {} + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 20.11.6 + + '@types/node@20.11.6': + dependencies: + undici-types: 5.26.5 + + '@types/qs@6.9.11': {} + + '@types/range-parser@1.2.7': {} + + '@types/retry@0.12.2': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.11.6 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 + + '@types/serve-static@1.15.5': + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.11.6 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 20.11.6 + + '@types/ws@8.5.10': + dependencies: + '@types/node': 20.11.6 + + '@vitejs/plugin-basic-ssl@1.1.0(vite@5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))': + dependencies: + vite: 5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0) + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + '@yarnpkg/lockfile@1.1.0': {} + + abbrev@2.0.0: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-assertions@1.9.0(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn@8.11.3: {} + + adjust-sourcemap-loader@4.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + + agent-base@7.1.0: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-formats@2.1.1(ajv@8.12.0): + optionalDependencies: + ajv: 8.12.0 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.12.0): + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + autoprefixer@10.4.19(postcss@8.4.38): + dependencies: + browserslist: 4.23.1 + caniuse-lite: 1.0.30001632 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + babel-loader@9.1.3(@babel/core@7.24.5)(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + '@babel/core': 7.24.5 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.91.0(esbuild@0.21.3) + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + base-64@1.0.0: {} + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + batch@0.6.1: {} + + big.js@5.2.2: {} + + binary-extensions@2.2.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + body-parser@1.20.1: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.2.1: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + browserslist@4.22.2: + dependencies: + caniuse-lite: 1.0.30001580 + electron-to-chromium: 1.4.646 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + + browserslist@4.23.1: + dependencies: + caniuse-lite: 1.0.30001632 + electron-to-chromium: 1.4.798 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtins@5.0.1: + dependencies: + semver: 7.6.2 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + cacache@18.0.2: + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.2.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + + call-bind@1.0.5: + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001580: {} + + caniuse-lite@1.0.30001632: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chardet@0.7.0: {} + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@2.0.0: {} + + chrome-trace-event@1.0.3: {} + + clean-stack@2.2.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-width@4.1.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + commander@2.20.3: {} + + common-path-prefix@3.0.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + connect-history-api-fallback@2.0.0: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.4.2: {} + + cookie@0.5.0: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-webpack-plugin@11.0.0(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.91.0(esbuild@0.21.3) + + core-js-compat@3.35.1: + dependencies: + browserslist: 4.22.2 + + core-js-compat@3.37.1: + dependencies: + browserslist: 4.23.1 + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@9.0.0(typescript@5.4.5): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.4.5 + + critters@0.0.22: + dependencies: + chalk: 4.1.2 + css-select: 5.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 8.0.2 + postcss: 8.4.38 + postcss-media-query-parser: 0.2.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-loader@7.1.1(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) + postcss-modules-scope: 3.2.0(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) + postcss-value-parser: 4.2.0 + semver: 7.6.2 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + custom-event@1.0.1: {} + + date-format@4.0.14: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.1: + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-libc@2.0.3: {} + + detect-node@2.1.0: {} + + di@0.0.1: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + + dom-serialize@2.2.1: + dependencies: + custom-event: 1.0.1 + ent: 2.2.0 + extend: 3.0.2 + void-elements: 2.0.1 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.646: {} + + electron-to-chromium@1.4.798: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + engine.io-parser@5.2.1: {} + + engine.io@6.5.4: + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 20.11.6 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.2.1 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.17.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + ent@2.2.0: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + err-code@2.0.3: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.4.1: {} + + esbuild-wasm@0.21.3: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + esbuild@0.21.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.3 + '@esbuild/android-arm': 0.21.3 + '@esbuild/android-arm64': 0.21.3 + '@esbuild/android-x64': 0.21.3 + '@esbuild/darwin-arm64': 0.21.3 + '@esbuild/darwin-x64': 0.21.3 + '@esbuild/freebsd-arm64': 0.21.3 + '@esbuild/freebsd-x64': 0.21.3 + '@esbuild/linux-arm': 0.21.3 + '@esbuild/linux-arm64': 0.21.3 + '@esbuild/linux-ia32': 0.21.3 + '@esbuild/linux-loong64': 0.21.3 + '@esbuild/linux-mips64el': 0.21.3 + '@esbuild/linux-ppc64': 0.21.3 + '@esbuild/linux-riscv64': 0.21.3 + '@esbuild/linux-s390x': 0.21.3 + '@esbuild/linux-x64': 0.21.3 + '@esbuild/netbsd-x64': 0.21.3 + '@esbuild/openbsd-x64': 0.21.3 + '@esbuild/sunos-x64': 0.21.3 + '@esbuild/win32-arm64': 0.21.3 + '@esbuild/win32-ia32': 0.21.3 + '@esbuild/win32-x64': 0.21.3 + + escalade@3.1.1: {} + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esprima@4.0.1: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exponential-backoff@3.1.1: {} + + express@4.18.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + 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.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + fast-json-stable-stringify@2.1.0: {} + + fastq@1.16.0: + dependencies: + reusify: 1.0.4 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.1.2: + dependencies: + 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 + transitivePeerDependencies: + - supports-color + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@4.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + flat@5.0.2: {} + + flatted@3.2.9: {} + + follow-redirects@1.15.5(debug@4.3.4): + optionalDependencies: + debug: 4.3.4 + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.0.4 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.2: + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.3.10: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 4.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.2 + + graceful-fs@4.2.11: {} + + handle-thing@2.0.1: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.1: + dependencies: + get-intrinsic: 1.2.2 + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + hasown@2.0.0: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@7.0.1: + dependencies: + lru-cache: 10.2.0 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-entities@2.4.0: {} + + html-escaper@2.0.2: {} + + html5-qrcode@2.3.8: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-cache-semantics@4.1.1: {} + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.8: {} + + http-proxy-agent@7.0.0: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@2.0.6(@types/express@4.17.21): + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1(debug@4.3.4) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy-middleware@3.0.0: + dependencies: + '@types/http-proxy': 1.17.14 + debug: 4.3.4 + http-proxy: 1.18.1(debug@4.3.4) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1(debug@4.3.4): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5(debug@4.3.4) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + https-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.4: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + hyperdyperid@1.2.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + ieee754@1.2.1: {} + + ignore-walk@6.0.4: + dependencies: + minimatch: 9.0.3 + + ignore@5.3.0: {} + + image-size@0.5.5: + optional: true + + immutable@4.3.4: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@4.1.2: {} + + inquirer@9.2.22: + dependencies: + '@inquirer/figures': 1.0.3 + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + ip@2.0.0: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.1.0: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.2.0 + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.0 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-lambda@1.0.1: {} + + is-network-error@1.1.0: {} + + is-number@7.0.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-stream@2.0.1: {} + + is-unicode-supported@0.1.0: {} + + is-what@3.14.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isbinaryfile@4.0.10: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + isobject@3.0.1: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.6: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jasmine-core@4.6.0: {} + + jasmine-core@5.1.0: {} + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.11.6 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.0: {} + + js-base64@3.7.6: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonc-parser@3.2.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + karma-chrome-launcher@3.2.0: + dependencies: + which: 1.3.1 + + karma-coverage@2.2.0: + dependencies: + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.0)(karma-jasmine@5.1.0(karma@6.4.0))(karma@6.4.0): + dependencies: + jasmine-core: 5.1.0 + karma: 6.4.0 + karma-jasmine: 5.1.0(karma@6.4.0) + + karma-jasmine@5.1.0(karma@6.4.0): + dependencies: + jasmine-core: 4.6.0 + karma: 6.4.0 + + karma-source-map-support@1.4.0: + dependencies: + source-map-support: 0.5.21 + + karma@6.4.0: + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.2 + braces: 3.0.2 + chokidar: 3.5.3 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1(debug@4.3.4) + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.7.4 + source-map: 0.6.1 + tmp: 0.2.1 + ua-parser-js: 0.7.37 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + kind-of@6.0.3: {} + + launch-editor@2.6.1: + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + + less-loader@12.2.0(less@4.2.0)(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + less: 4.2.0 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + + less@4.2.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + license-webpack-plugin@4.0.2(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + webpack-sources: 3.2.3 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + + lines-and-columns@1.2.4: {} + + lmdb@3.0.8: + dependencies: + msgpackr: 1.10.2 + node-addon-api: 6.1.0 + node-gyp-build-optional-packages: 5.1.1 + ordered-binary: 1.5.1 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 3.0.8 + '@lmdb/lmdb-darwin-x64': 3.0.8 + '@lmdb/lmdb-linux-arm': 3.0.8 + '@lmdb/lmdb-linux-arm64': 3.0.8 + '@lmdb/lmdb-linux-x64': 3.0.8 + '@lmdb/lmdb-win32-x64': 3.0.8 + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@3.2.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.debounce@4.0.8: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + flatted: 3.2.9 + rfdc: 1.3.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + + lru-cache@10.2.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + make-dir@4.0.0: + dependencies: + semver: 7.5.4 + + make-fetch-happen@13.0.0: + dependencies: + '@npmcli/agent': 2.2.0 + cacache: 18.0.2 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + + media-typer@0.3.0: {} + + memfs@4.9.2: + dependencies: + '@jsonjoy.com/json-pack': 1.0.4(tslib@2.6.2) + '@jsonjoy.com/util': 1.1.3(tslib@2.6.2) + sonic-forest: 1.0.3(tslib@2.6.2) + tslib: 2.6.2 + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mini-css-extract-plugin@2.9.0(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.91.0(esbuild@0.21.3) + + minimalistic-assert@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@2.0.1: + dependencies: + minipass: 7.0.4 + + minipass-fetch@3.0.4: + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-json-stream@1.0.1: + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.0.4: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.10.2: + optionalDependencies: + msgpackr-extract: 3.0.3 + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + mute-stream@1.0.0: {} + + nanoid@3.3.7: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + optional: true + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + nice-napi@1.0.2: + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.0 + optional: true + + node-addon-api@3.2.1: + optional: true + + node-addon-api@6.1.0: {} + + node-forge@1.3.1: {} + + node-gyp-build-optional-packages@5.1.1: + dependencies: + detect-libc: 2.0.3 + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.3 + optional: true + + node-gyp-build@4.8.0: + optional: true + + node-gyp@10.0.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.6.2 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + + node-releases@2.0.14: {} + + nopt@7.2.0: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@6.0.0: + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.6.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-bundled@3.0.0: + dependencies: + npm-normalize-package-bin: 3.0.1 + + npm-install-checks@6.3.0: + dependencies: + semver: 7.6.2 + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@11.0.2: + dependencies: + hosted-git-info: 7.0.1 + proc-log: 4.2.0 + semver: 7.6.2 + validate-npm-package-name: 5.0.0 + + npm-packlist@8.0.2: + dependencies: + ignore-walk: 6.0.4 + + npm-pick-manifest@9.0.1: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.2 + semver: 7.6.2 + + npm-registry-fetch@17.0.1: + dependencies: + '@npmcli/redact': 2.0.1 + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.2 + proc-log: 4.2.0 + transitivePeerDependencies: + - supports-color + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.1: {} + + obuf@1.1.2: {} + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ordered-binary@1.5.1: {} + + os-tmpdir@1.0.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-retry@6.2.0: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.1.0 + retry: 0.13.1 + + p-try@2.2.0: {} + + pacote@18.0.6: + dependencies: + '@npmcli/git': 5.0.4 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.1 + '@npmcli/run-script': 8.1.0 + cacache: 18.0.2 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.2 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.0.1 + npm-registry-fetch: 17.0.1 + proc-log: 4.2.0 + promise-retry: 2.0.1 + sigstore: 2.2.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse5-html-rewriting-stream@7.0.0: + dependencies: + entities: 4.5.0 + parse5: 7.1.2 + parse5-sax-parser: 7.0.0 + + parse5-sax-parser@7.0.0: + dependencies: + parse5: 7.1.2 + + parse5@7.1.2: + dependencies: + entities: 4.5.0 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.10.1: + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + + path-to-regexp@0.1.7: {} + + path-type@4.0.0: {} + + picocolors@1.0.0: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@4.0.1: + optional: true + + piscina@4.5.0: + optionalDependencies: + nice-napi: 1.0.2 + + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + + postcss-loader@8.1.1(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + cosmiconfig: 9.0.0(typescript@5.4.5) + jiti: 1.21.0 + postcss: 8.4.38 + semver: 7.6.2 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + transitivePeerDependencies: + - typescript + + postcss-media-query-parser@0.2.3: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.15 + + postcss-modules-values@4.0.0(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + + postcss-selector-parser@6.0.15: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + proc-log@3.0.0: {} + + proc-log@4.2.0: {} + + process-nextick-args@2.0.1: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + prr@1.0.1: + optional: true + + punycode@2.3.1: {} + + qjobs@1.2.0: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.4 + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reflect-metadata@0.2.2: {} + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.24.5 + + regex-parser@2.3.0: {} + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-url-loader@5.0.0: + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.38 + source-map: 0.6.1 + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rfdc@1.3.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.7: + dependencies: + glob: 10.3.10 + + rollup@4.18.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + + run-applescript@7.0.0: {} + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.0: + dependencies: + tslib: 2.3.0 + + rxjs@7.8.1: + dependencies: + tslib: 2.6.2 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + safevalues@0.3.4: {} + + sass-loader@14.2.1(sass@1.77.2)(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + neo-async: 2.6.2 + optionalDependencies: + sass: 1.77.2 + webpack: 5.91.0(esbuild@0.21.3) + + sass@1.77.2: + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + + sax@1.3.0: + optional: true + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver@5.7.2: + optional: true + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.2: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + 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: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.0: + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sigstore@2.2.0: + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 2.2.1 + '@sigstore/tuf': 2.3.0 + '@sigstore/verify': 0.1.0 + transitivePeerDependencies: + - supports-color + + slash@4.0.0: {} + + smart-buffer@4.2.0: {} + + socket.io-adapter@2.5.2: + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + socket.io@4.7.4: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4 + engine.io: 6.5.4 + socket.io-adapter: 2.5.2 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + socks-proxy-agent@8.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + + socks@2.7.1: + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + + sonic-forest@1.0.3(tslib@2.6.2): + dependencies: + tree-dump: 1.0.1(tslib@2.6.2) + tslib: 2.6.2 + + source-map-js@1.0.2: {} + + source-map-js@1.2.0: {} + + source-map-loader@5.0.0(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.91.0(esbuild@0.21.3) + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + + spdx-exceptions@2.4.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + + spdx-license-ids@3.0.16: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + sprintf-js@1.0.3: {} + + ssri@10.0.5: + dependencies: + minipass: 7.0.4 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-final-newline@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-observable@4.0.0: {} + + tapable@2.2.1: {} + + tar@6.2.0: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + terser-webpack-plugin@5.3.10(esbuild@0.21.3)(webpack@5.91.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.0 + webpack: 5.91.0(esbuild@0.21.3) + optionalDependencies: + esbuild: 0.21.3 + + terser@5.31.0: + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + thingies@1.21.0(tslib@2.6.2): + dependencies: + tslib: 2.6.2 + + thunky@1.1.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmp@0.2.1: + dependencies: + rimraf: 3.0.2 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tree-dump@1.0.1(tslib@2.6.2): + dependencies: + tslib: 2.6.2 + + tree-kill@1.2.2: {} + + tslib@2.3.0: {} + + tslib@2.6.2: {} + + tuf-js@2.2.0: + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-assert@1.0.9: {} + + typescript@5.4.5: {} + + ua-parser-js@0.7.37: {} + + undici-types@5.26.5: {} + + undici@6.18.0: {} + + unicode-canonical-property-names-ecmascript@2.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.1.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + universalify@0.1.2: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.0.13(browserslist@4.22.2): + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + + update-browserslist-db@1.0.16(browserslist@4.23.1): + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.0: + dependencies: + builtins: 5.0.1 + + vary@1.1.2: {} + + vite@5.2.11(@types/node@20.11.6)(less@4.2.0)(sass@1.77.2)(terser@5.31.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 20.11.6 + fsevents: 2.3.3 + less: 4.2.0 + sass: 1.77.2 + terser: 5.31.0 + + void-elements@2.0.1: {} + + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + weak-lru-cache@1.2.2: {} + + webpack-dev-middleware@7.2.1(webpack@5.91.0): + dependencies: + colorette: 2.0.20 + memfs: 4.9.2 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + + webpack-dev-server@5.0.4(webpack@5.91.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 10.1.0 + p-retry: 6.2.0 + rimraf: 5.0.7 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.2.1(webpack@5.91.0) + ws: 8.16.0 + optionalDependencies: + webpack: 5.91.0(esbuild@0.21.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@3.2.3: {} + + webpack-subresource-integrity@5.1.0(webpack@5.91.0(esbuild@0.21.3)): + dependencies: + typed-assert: 1.0.9 + webpack: 5.91.0(esbuild@0.21.3) + + webpack@5.91.0(esbuild@0.21.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.21.3)(webpack@5.91.0) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + wildcard@2.0.1: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@8.11.0: {} + + ws@8.16.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@1.0.0: {} + + zone.js@0.14.2: + dependencies: + tslib: 2.3.0 diff --git a/front/src/app/app.component.html b/front/src/app/app.component.html new file mode 100644 index 0000000..e8c2528 --- /dev/null +++ b/front/src/app/app.component.html @@ -0,0 +1,27 @@ +
+ + Ult App + + @if (user_srv.user().username != "") { + + + + + + + } + +
+
+ @if (url != 'login') { +
+
    +
  • 用户管理
  • +
  • 操作日志
  • +
+
+ } + +
diff --git a/front/src/app/app.component.scss b/front/src/app/app.component.scss new file mode 100644 index 0000000..5dc244c --- /dev/null +++ b/front/src/app/app.component.scss @@ -0,0 +1,78 @@ + +:host { + display: flex; + height: 100%; + max-height: 100%; + width: 100%; + flex-direction: column; + + div.title { + width: 100%; + max-width: 100%; + height: 64px; + + span.home-button { + cursor: pointer; + } + + button.title-menu { + margin-left: auto; + } + } + + div.content { + width: 100%; + height: calc(100% - 64px); + max-height: calc(100% - 64px); + display: flex; + flex-direction: row; + + .side-container { + display: flex; + width: 235px; + max-width: 235px; + min-width: 235px; + flex-direction: column; + border-right: 1px solid #ddd; + max-height: 100%; + overflow-y: auto; + + + ul { + width: 100%; + margin: 0; + padding: 0; + + li { + list-style: none; + display: flex; + align-items: center; + text-indent: 1rem; + width: 100%; + height: 48px; + font-size: 16px; + + &:hover { + background: rgba(239,239,239); + cursor: pointer; + } + + &.active { + background: rgb(221,221,237); + color: rgb(60,63,169); + } + } + } + } + } +} + +@media screen and (max-width: 40rem) { + :host { + div.content { + .side-container { + display: none; + } + } + } +} diff --git a/front/src/app/app.component.spec.ts b/front/src/app/app.component.spec.ts new file mode 100644 index 0000000..3f7dfb1 --- /dev/null +++ b/front/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppComponent], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have the 'front' title`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('front'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, front'); + }); +}); diff --git a/front/src/app/app.component.ts b/front/src/app/app.component.ts new file mode 100644 index 0000000..d966b3f --- /dev/null +++ b/front/src/app/app.component.ts @@ -0,0 +1,38 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {ActivatedRoute, NavigationEnd, Router, RouterOutlet} from '@angular/router'; +import {MatSidenav, MatSidenavContainer, MatSidenavContent} from "@angular/material/sidenav"; +import {MatIcon} from "@angular/material/icon"; +import {MatToolbar} from "@angular/material/toolbar"; +import {MatButton, MatIconButton} from "@angular/material/button"; +import {UserService} from "./service/user.service"; +import {MatMenu, MatMenuItem, MatMenuTrigger} from "@angular/material/menu"; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [CommonModule, RouterOutlet, MatSidenavContent, MatSidenav, MatSidenavContainer, MatIcon, MatToolbar, MatIconButton, MatButton, MatMenuTrigger, MatMenu, MatMenuItem], + templateUrl: './app.component.html', + styleUrl: './app.component.scss', +}) +export class AppComponent { + title = 'front'; + url = ''; + + constructor( + public router: Router, + public user_srv: UserService, + ) { + this.router.events.subscribe(val => { + if (val instanceof NavigationEnd) { + let _url = val.url + if (_url.startsWith("/")) { + _url = _url.slice(1) + } + _url = _url.split("/")[0] + console.log('[D] router val=', _url) + this.url = _url + } + }) + } +} diff --git a/front/src/app/app.config.ts b/front/src/app/app.config.ts new file mode 100644 index 0000000..c675dbf --- /dev/null +++ b/front/src/app/app.config.ts @@ -0,0 +1,22 @@ +import {ApplicationConfig, isDevMode} from '@angular/core'; +import {provideRouter} from '@angular/router'; + +import {routes} from './app.routes'; +import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from "@angular/common/http"; +import {alerterInterceptor} from "./interceptor/alerter.interceptor"; +import {provideAnimations} from '@angular/platform-browser/animations'; +import { provideServiceWorker } from '@angular/service-worker'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideRouter(routes), + provideHttpClient(withInterceptorsFromDi()), { + provide: HTTP_INTERCEPTORS, useClass: alerterInterceptor, multi: true + }, + provideAnimations(), + provideServiceWorker('ngsw-worker.js', { + enabled: !isDevMode(), + registrationStrategy: 'registerWhenStable:30000' + }) +] +}; diff --git a/front/src/app/app.routes.ts b/front/src/app/app.routes.ts new file mode 100644 index 0000000..30b0761 --- /dev/null +++ b/front/src/app/app.routes.ts @@ -0,0 +1,12 @@ +import {Routes} from '@angular/router'; +import {HomeComponent} from "./page/home/home.component"; +import {LoginComponent} from "./page/login/login.component"; +import {LogComponent} from "./page/log/log.component"; +import {UserComponent} from "./page/user/user.component"; + +export const routes: Routes = [ + {path: "", component: HomeComponent}, + {path: "login", component: LoginComponent}, + {path: "log", component: LogComponent}, + {path: "user", component: UserComponent}, +]; diff --git a/front/src/app/component/confirm/confirm.component.html b/front/src/app/component/confirm/confirm.component.html new file mode 100644 index 0000000..b4fea41 --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.html @@ -0,0 +1,5 @@ +

{{data.title}}

+ + + + diff --git a/front/src/app/component/confirm/confirm.component.scss b/front/src/app/component/confirm/confirm.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/front/src/app/component/confirm/confirm.component.spec.ts b/front/src/app/component/confirm/confirm.component.spec.ts new file mode 100644 index 0000000..9d59a2d --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfirmComponent } from './confirm.component'; + +describe('ConfirmComponent', () => { + let component: ConfirmComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ConfirmComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ConfirmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/confirm/confirm.component.ts b/front/src/app/component/confirm/confirm.component.ts new file mode 100644 index 0000000..0eb6efe --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.ts @@ -0,0 +1,20 @@ +import {Component, Inject, signal} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {ConfirmData} from "../../interface/confirm_data"; +import {MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogTitle} from "@angular/material/dialog"; +import {MatButton} from "@angular/material/button"; + +@Component({ + selector: 'app-confirm', + standalone: true, + imports: [CommonModule, MatDialogTitle, MatDialogActions, MatButton, MatDialogClose], + templateUrl: './confirm.component.html', + styleUrl: './confirm.component.scss' +}) +export class ConfirmComponent { + constructor(@Inject(MAT_DIALOG_DATA) public data: ConfirmData) {} + + confirm() { + this.data.confirmed = true + } +} diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.html b/front/src/app/component/create-user-dialog/create-user-dialog.component.html new file mode 100644 index 0000000..357c198 --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.html @@ -0,0 +1,40 @@ +

新建用户

+ + + username + + + + + password + + + + + confirm password + + + + + privilege + + @for (privilege of user_srv.user().privileges; track privilege) { + {{privilege.label}} + } + + + + + status + + 正常 + 冻结 + + + + + + + + diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.scss b/front/src/app/component/create-user-dialog/create-user-dialog.component.scss new file mode 100644 index 0000000..141fada --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.scss @@ -0,0 +1,14 @@ +:host { + mat-dialog-content.create-user-content{ + display: flex; + flex-direction: column; + width: 450px; + } +} +@media screen and (max-width: 40rem) { + :host { + mat-dialog-content.create-user-content{ + width: 100%; + } + } +} diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts b/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts new file mode 100644 index 0000000..a743be8 --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreateUserDialogComponent } from './create-user-dialog.component'; + +describe('CreateUserDialogComponent', () => { + let component: CreateUserDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CreateUserDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CreateUserDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.ts b/front/src/app/component/create-user-dialog/create-user-dialog.component.ts new file mode 100644 index 0000000..e5330be --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.ts @@ -0,0 +1,102 @@ +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatFormField, MatHint, MatLabel} from "@angular/material/form-field"; +import {MatOption, MatSelect} from "@angular/material/select"; +import {MatInput} from "@angular/material/input"; +import {MatButton} from "@angular/material/button"; +import {FormsModule} from "@angular/forms"; +import {NewUser} from "../../interface/user"; +import {MsgService} from "../../service/msg.service"; +import { + MatDialogActions, + MatDialogClose, + MatDialogContent, + MatDialogRef, + MatDialogTitle +} from "@angular/material/dialog"; +import {UserService} from "../../service/user.service"; + +interface user_form { + username: string, + nickname: string, + password: string, + confirm_password: string, + status: 0 | 1, + privileges: number[], +} + +@Component({ + selector: 'app-create-user-dialog', + standalone: true, + imports: [ + CommonModule, + MatFormField, + MatSelect, + MatOption, + MatInput, + MatLabel, + MatHint, + MatButton, + FormsModule, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose, + ], + templateUrl: './create-user-dialog.component.html', + styleUrl: './create-user-dialog.component.scss' +}) +export class CreateUserDialogComponent { + new_user = { + username: "", + nickname: "", + password: "", + confirm_password: "", + status: 0, + privileges: [], + } as user_form + + constructor( + public msg_srv: MsgService, + public user_srv: UserService, + public dialogRef: MatDialogRef, + ) { + } + + create() { + if (this.new_user.username.length < 3) { + this.msg_srv.warning("用户名长度不能小于3") + return + } + if (this.new_user.password.length < 8) { + this.msg_srv.warning("密码至少8位") + return + } + if (!this.new_user.password.match(/[a-z]+/)) { + this.msg_srv.warning("密码必须包含小写字母") + return + } + if (!this.new_user.password.match(/[A-Z]+/)) { + this.msg_srv.warning("密码必须包含大写字母") + return + } + if (this.new_user.password != this.new_user.confirm_password) { + this.msg_srv.warning("输入的两次密码不同") + return + } + console.log('[D] before create new user, new_user=', this.new_user) + + this.user_srv.manage_user_create({ + username: this.new_user.username, + password: this.new_user.password, + status: this.new_user.status, + privileges: this.new_user.privileges, + role: 100, + } as NewUser).subscribe(val => { + if (val.status === 200) { + this.msg_srv.success("创建用户成功") + this.dialogRef.close() + } + }) + } +} diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.html b/front/src/app/component/update-user-dialog/update-user-dialog.component.html new file mode 100644 index 0000000..fe3971f --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.html @@ -0,0 +1,35 @@ +

修改用户

+ + + password + + + + + confirm password + + + + + privilege + + @for (privilege of user_srv.user().privileges; track privilege) { + {{privilege.label}} + } + + + + + status + + 正常 + 冻结 + + + + + + + + diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.scss b/front/src/app/component/update-user-dialog/update-user-dialog.component.scss new file mode 100644 index 0000000..eedaebb --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.scss @@ -0,0 +1,14 @@ +:host { + mat-dialog-content.update-user-content{ + display: flex; + flex-direction: column; + width: 450px; + } +} +@media screen and (max-width: 40rem) { + :host { + mat-dialog-content.update-user-content{ + width: 100%; + } + } +} diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts b/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts new file mode 100644 index 0000000..666b95d --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UpdateUserDialogComponent } from './update-user-dialog.component'; + +describe('UpdateUserDialogComponent', () => { + let component: UpdateUserDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [UpdateUserDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UpdateUserDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.ts b/front/src/app/component/update-user-dialog/update-user-dialog.component.ts new file mode 100644 index 0000000..14f2bf4 --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.ts @@ -0,0 +1,93 @@ +import {Component, Inject} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatButton} from "@angular/material/button"; +import { + MAT_DIALOG_DATA, + MatDialogActions, + MatDialogClose, + MatDialogContent, MatDialogRef, + MatDialogTitle +} from "@angular/material/dialog"; +import {MatFormField, MatLabel} from "@angular/material/form-field"; +import {MatInput} from "@angular/material/input"; +import {MatOption} from "@angular/material/autocomplete"; +import {MatSelect} from "@angular/material/select"; +import {FormControl, FormsModule, ReactiveFormsModule} from "@angular/forms"; +import {User} from "../../interface/user"; +import {Enum} from "../../interface/enum"; +import {MsgService} from "../../service/msg.service"; +import {ArrayEquals} from "../../../tool"; +import {UserService} from "../../service/user.service"; + +interface updateUser extends User { + password: string + confirm_password: string +} + +type Updates = { [key: string]: any } + +@Component({ + selector: 'app-update-user-dialog', + standalone: true, + imports: [CommonModule, MatButton, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle, MatFormField, MatInput, MatLabel, MatOption, MatSelect, ReactiveFormsModule, FormsModule], + templateUrl: './update-user-dialog.component.html', + styleUrl: './update-user-dialog.component.scss' +}) +export class UpdateUserDialogComponent { + + user: updateUser = {} as updateUser + + privileges = new FormControl([] as number[]) + status = new FormControl() + password = new FormControl('') + confirm_password = new FormControl('') + + constructor( + @Inject(MAT_DIALOG_DATA) public data: User, + private msg_srv: MsgService, + public user_srv: UserService, + public dialogRef: MatDialogRef, + ) { + this.user = {...data, password: '', confirm_password: ''} + this.privileges.setValue(this.user.privileges.map(v => v.value)) + this.status.setValue(this.user.status.value) + } + + update() { + let updated = false + let updates: Updates = {"id": this.user.id} + if (this.password.value || this.confirm_password.value) { + updated = true + updates["password"] = this.password.value + if (this.password.value != this.confirm_password.value) { + this.msg_srv.warning('两次密码不相同') + return + } + } + + if (this.status.value != this.user.status.value) { + updated = true + updates["status"] = this.status.value + } + + if (!ArrayEquals(this.privileges.value!, this.user.privileges.map(p => p.value))) { + updates["privileges"] = this.privileges.value + updated = true + } + + if (!updated) { + this.msg_srv.warning('没有变更') + return + } + + this.user_srv.manage_user_update(updates).subscribe(rs => { + if (rs.status === 200 || rs.status === 401) { + this.dialogRef.close() + } + }) + } + + initedPrivileges(privileges: Enum[]) { + return privileges.map(p => p.value) + } +} diff --git a/front/src/app/interceptor/alerter.interceptor.ts b/front/src/app/interceptor/alerter.interceptor.ts new file mode 100644 index 0000000..09b5225 --- /dev/null +++ b/front/src/app/interceptor/alerter.interceptor.ts @@ -0,0 +1,48 @@ +import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'; +import {map, Observable} from "rxjs"; +import {Response} from "../interface/response"; +import {MsgService} from "../service/msg.service"; +import {Router} from "@angular/router"; +import {Injectable} from "@angular/core"; +import {UserService} from "../service/user.service"; + +// import {MsgService} from "../service/msg.service"; + + +@Injectable({ + providedIn: 'root' +}) +export class alerterInterceptor implements HttpInterceptor { + constructor( + private msg_srv: MsgService, + private router: Router, + ) { + } + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + // const nr = req.clone().headers.set("Authorization", localStorage.getItem("ult-token")) + req = req.clone({headers: req.headers.append("Authorization", localStorage.getItem("ult-token") ?? "")}) + return next.handle(req).pipe( + map((event) => { + if (event instanceof HttpResponse) { + try { + const rs = (event.body) as Response + console.log(`[D] ${req.method} - ${req.url} =>`, rs) + if (rs.status > 200) { + this.msg_srv.error(rs.msg) + // alert(rs.msg) + } + + if (rs.status === 401) { + this.router.navigate(['login']) + } + } catch (e) { + console.warn('[E] http err=',e) + this.msg_srv.error('无法连接服务器') + } + } + return event + }) + ); + } +} diff --git a/front/src/app/interface/confirm_data.ts b/front/src/app/interface/confirm_data.ts new file mode 100644 index 0000000..86d06e7 --- /dev/null +++ b/front/src/app/interface/confirm_data.ts @@ -0,0 +1,4 @@ +export interface ConfirmData { + title: string; + confirmed: boolean; +} diff --git a/front/src/app/interface/enum.ts b/front/src/app/interface/enum.ts new file mode 100644 index 0000000..3e94dcc --- /dev/null +++ b/front/src/app/interface/enum.ts @@ -0,0 +1,5 @@ +export interface Enum { + value: T, + code: string, + label: string, +} diff --git a/front/src/app/interface/log.ts b/front/src/app/interface/log.ts new file mode 100644 index 0000000..9995332 --- /dev/null +++ b/front/src/app/interface/log.ts @@ -0,0 +1,13 @@ +import {Enum} from "./enum"; + +export interface Log { + id: number, + created_at: number, + updated_at: number, + deleted_at: number, + user_id: number, + username: string, + type: Enum, + content: { [key: string]: any }, + html: string, +} diff --git a/front/src/app/interface/response.ts b/front/src/app/interface/response.ts new file mode 100644 index 0000000..941a770 --- /dev/null +++ b/front/src/app/interface/response.ts @@ -0,0 +1,5 @@ +export interface Response { + status: number; + msg: string; + data: T; +} diff --git a/front/src/app/interface/user.ts b/front/src/app/interface/user.ts new file mode 100644 index 0000000..741c08c --- /dev/null +++ b/front/src/app/interface/user.ts @@ -0,0 +1,30 @@ +import {Enum} from "./enum"; + +export interface User { + id: number, + created_at: number, + updated_at: number, + deleted_at: number, + username: string, + status: Enum<0 | 1>, + nickname: string, + comment: string, + role: Enum<100 | 254 | 256>, + privileges: Enum[], + created_by_id: number, + created_by_name: string, + active_at: number, + deadline: number, + login_at: number, +} + +export interface NewUser { + username: string, + nickname: string, + status: 0 | 1, + password: string, + privileges: number[], + deadline: number, + role: 100, + comment: string, +} diff --git a/front/src/app/page/home/home.component.html b/front/src/app/page/home/home.component.html new file mode 100644 index 0000000..57e6edb --- /dev/null +++ b/front/src/app/page/home/home.component.html @@ -0,0 +1 @@ +

Welcome

diff --git a/front/src/app/page/home/home.component.scss b/front/src/app/page/home/home.component.scss new file mode 100644 index 0000000..8cc991a --- /dev/null +++ b/front/src/app/page/home/home.component.scss @@ -0,0 +1,76 @@ + +:host { + width: 100%; + height: 100%; + max-height: 100%; + min-height: 100%; + display: flex; + justify-content: center; + align-items: center; + background-color: white; + margin: 0; + + @keyframes fillup { + from { + background-position-x: 200%; + } + to { + background-position-x: 0; + } + } + + @keyframes fadein { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + h1 { + width: 100%; + margin: 0; + padding: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: var(--my-primary-color); + font-size: 12rem; + font-family: Arial, Helvetica, sans-serif; + font-weight: 800; + letter-spacing: -0.5rem; + position: relative; + background-image: linear-gradient(to right, var(--my-primary-color), var(--my-primary-color), transparent); + background-size: 200% 100%; + background-repeat: no-repeat; + -webkit-background-clip: text; + background-position-x: 200%; + animation: 3s fillup ease-in-out 2s forwards; + + &::after { + content: "Welcome"; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + -webkit-text-stroke-color: white; + -webkit-text-fill-color: transparent; + opacity: 0; + animation: 2s fadein ease-in-out forwards; + } + } +} + +@media screen and (max-width: 40rem) { + :host { + h1 { + font-size: 8rem; + } + } +} diff --git a/front/src/app/page/home/home.component.spec.ts b/front/src/app/page/home/home.component.spec.ts new file mode 100644 index 0000000..60c47c4 --- /dev/null +++ b/front/src/app/page/home/home.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [HomeComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/home/home.component.ts b/front/src/app/page/home/home.component.ts new file mode 100644 index 0000000..93ffe5d --- /dev/null +++ b/front/src/app/page/home/home.component.ts @@ -0,0 +1,17 @@ +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {UserService} from "../../service/user.service"; + +@Component({ + selector: 'app-home', + standalone: true, + imports: [CommonModule], + templateUrl: './home.component.html', + styleUrl: './home.component.scss' +}) +export class HomeComponent { + constructor( + public user_srv: UserService + ) { + } +} diff --git a/front/src/app/page/log/log.component.html b/front/src/app/page/log/log.component.html new file mode 100644 index 0000000..38903b5 --- /dev/null +++ b/front/src/app/page/log/log.component.html @@ -0,0 +1,28 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
用户 {{ element.username }}时间 {{ element.created_at | date: "yyyy-MM-dd HH:mm:SS" }}日志类型 {{ element.type.label }}操作
+
+
diff --git a/front/src/app/page/log/log.component.scss b/front/src/app/page/log/log.component.scss new file mode 100644 index 0000000..16a6ef5 --- /dev/null +++ b/front/src/app/page/log/log.component.scss @@ -0,0 +1,11 @@ +:host { + width: 100%; + overflow-x: auto; + + ::ng-deep td>div.nf-op-log>span.nf-op-log-keyword { + color: var(--my-primary-color); + text-decoration: underline; + font-weight: bold; + margin: 0 1rem; + } +} diff --git a/front/src/app/page/log/log.component.spec.ts b/front/src/app/page/log/log.component.spec.ts new file mode 100644 index 0000000..b6e4786 --- /dev/null +++ b/front/src/app/page/log/log.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogComponent } from './log.component'; + +describe('LogComponent', () => { + let component: LogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/log/log.component.ts b/front/src/app/page/log/log.component.ts new file mode 100644 index 0000000..9c6c9bf --- /dev/null +++ b/front/src/app/page/log/log.component.ts @@ -0,0 +1,40 @@ +import {Component, OnInit} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {LogService} from "../../service/log.service"; +import {decode} from "js-base64" +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, + MatHeaderCellDef, + MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatTable +} from "@angular/material/table"; +import {MatIcon} from "@angular/material/icon"; +import {MatIconButton} from "@angular/material/button"; + +@Component({ + selector: 'app-log', + standalone: true, + imports: [CommonModule, MatTable, MatColumnDef, MatHeaderCell, MatCell, MatCellDef, MatHeaderCellDef, MatIcon, MatIconButton, MatHeaderRow, MatHeaderRowDef, MatRowDef, MatRow], + templateUrl: './log.component.html', + styleUrl: './log.component.scss' +}) +export class LogComponent implements OnInit { + displayedColumns = ["username", "created_at", "type", "html"] + + constructor( + public log_srv: LogService, + ) { + } + + ngOnInit() { + this.log_srv.get_logs() + } + + decodeLog(org: string): string { + return decode(org) + //.from(org, "base64").toString() + } +} diff --git a/front/src/app/page/login/login.component.html b/front/src/app/page/login/login.component.html new file mode 100644 index 0000000..5702f59 --- /dev/null +++ b/front/src/app/page/login/login.component.html @@ -0,0 +1,15 @@ +

+ + username + + +

+

+ + password + + +

+

+ +

diff --git a/front/src/app/page/login/login.component.scss b/front/src/app/page/login/login.component.scss new file mode 100644 index 0000000..e0db5af --- /dev/null +++ b/front/src/app/page/login/login.component.scss @@ -0,0 +1,24 @@ +:host { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + p { + min-width: 20rem; + max-width: 30rem; + width: 100%; + + mat-form-field { + width: 100%; + input { + width: 100%; + } + } + button { + width: 100%; + } + } +} diff --git a/front/src/app/page/login/login.component.spec.ts b/front/src/app/page/login/login.component.spec.ts new file mode 100644 index 0000000..1e19e5d --- /dev/null +++ b/front/src/app/page/login/login.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LoginComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/login/login.component.ts b/front/src/app/page/login/login.component.ts new file mode 100644 index 0000000..1ed6160 --- /dev/null +++ b/front/src/app/page/login/login.component.ts @@ -0,0 +1,46 @@ +import {Component, signal} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {FormsModule} from "@angular/forms"; +import {UserService} from "../../service/user.service"; +import {MatButton} from "@angular/material/button"; +import {MatFormField, MatInput, MatInputModule} from "@angular/material/input"; +import {MatIcon, MatIconModule} from "@angular/material/icon"; +import {MatFormFieldModule} from "@angular/material/form-field"; + +@Component({ + selector: 'app-login', + standalone: true, + imports: [ + CommonModule, + FormsModule, + MatButton, + MatInput, + MatFormField, + MatFormFieldModule, + MatInputModule, + MatIconModule, + MatIcon, + ], + templateUrl: './login.component.html', + styleUrl: './login.component.scss' +}) +export class LoginComponent { + + username: string = '' + password: string = '' + + constructor( + public user_srv: UserService + ) { + } + + login() { + this.user_srv.auth_login(this.username, this.password) + } + + enter(event: KeyboardEvent) { + if (event.key === 'Enter' && this.password && this.username) { + this.login() + } + } +} diff --git a/front/src/app/page/user/user.component.html b/front/src/app/page/user/user.component.html new file mode 100644 index 0000000..8680210 --- /dev/null +++ b/front/src/app/page/user/user.component.html @@ -0,0 +1,52 @@ +
+
+ 用户管理 +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
username {{ element.username }}status {{ element.status.label }}role {{ element.role.label }}privileges {{ _parsePrivileges(element.privileges) }}operation + + +
+
+
+ + +
diff --git a/front/src/app/page/user/user.component.scss b/front/src/app/page/user/user.component.scss new file mode 100644 index 0000000..1ef35e3 --- /dev/null +++ b/front/src/app/page/user/user.component.scss @@ -0,0 +1,37 @@ +:host { + width: 100%; + max-width: 100%; + display: flex; + flex-direction: column; + + > div { + width: 100%; + } + + div.toolbar { + display: flex; + width: 100%; + max-width: 100%; + align-items: center; + flex-direction: row; + margin-top: 1rem; + + > div { + margin-left: 1rem; + } + + button { + margin-left: auto; + margin-right: 1rem; + } + } + + div.table { + flex: 1 0 0; + margin-top: 1rem; + } + + div.pager { + margin-top: auto; + } +} diff --git a/front/src/app/page/user/user.component.spec.ts b/front/src/app/page/user/user.component.spec.ts new file mode 100644 index 0000000..04025f1 --- /dev/null +++ b/front/src/app/page/user/user.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserComponent } from './user.component'; + +describe('UserComponent', () => { + let component: UserComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [UserComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/user/user.component.ts b/front/src/app/page/user/user.component.ts new file mode 100644 index 0000000..c7469fa --- /dev/null +++ b/front/src/app/page/user/user.component.ts @@ -0,0 +1,92 @@ +import {Component, OnInit} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {UserService} from "../../service/user.service"; +import {MatButton, MatIconButton} from "@angular/material/button"; +import {MatDialog} from "@angular/material/dialog"; +import {CreateUserDialogComponent} from "../../component/create-user-dialog/create-user-dialog.component"; +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, + MatHeaderCellDef, + MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatTable +} from "@angular/material/table"; +import {MatIcon} from "@angular/material/icon"; +import {Enum} from "../../interface/enum"; +import {User} from "../../interface/user"; +import {ConfirmComponent} from "../../component/confirm/confirm.component"; +import {UpdateUserDialogComponent} from "../../component/update-user-dialog/update-user-dialog.component"; +import {MatPaginator, PageEvent} from "@angular/material/paginator"; + +@Component({ + selector: 'app-user', + standalone: true, + imports: [ + CommonModule, + MatButton, + MatTable, + MatColumnDef, + MatHeaderCell, + MatCell, + MatCellDef, + MatHeaderCellDef, + MatHeaderRow, + MatRow, + MatRowDef, + MatHeaderRowDef, + MatIconButton, + MatIcon, + MatPaginator, + ], + templateUrl: './user.component.html', + styleUrl: './user.component.scss' +}) +export class UserComponent implements OnInit { + readonly displayedColumns: string[] = ["username", "status", "role", "privileges", "operation",]; + + constructor( + public user_srv: UserService, + public dialog: MatDialog, + ) { + } + + ngOnInit() { + this.user_srv.manage_user_list() + } + + open_dialog() { + this.dialog.open(CreateUserDialogComponent, {data: {}}) + } + + _parsePrivileges(privileges: any): string { + try { + let ps = privileges as Enum[] + return ps.map(v => v.label).join("; ") + } catch (e) { + console.log("[D] parse privileges err=", e) + return "" + } + } + + delete_user(target: User) { + let data = {title: `确认删除用户 ${target.username} 吗?`, confirmed: false } + this.dialog.open(ConfirmComponent, {data: data}).afterClosed().subscribe(() => { + if (data.confirmed) { + this.user_srv.manage_user_delete(target) + } + }) + } + + update_user(target: User) { + this.dialog.open(UpdateUserDialogComponent, {data: target}) + } + + handlePager(event: PageEvent) { + console.log('[D] handle pager change event=', event) + this.user_srv.user_list.set({...this.user_srv.user_list(), size: event.pageSize, page: event.pageIndex}) + this.user_srv.manage_user_list() + } +} + diff --git a/front/src/app/service/log.service.spec.ts b/front/src/app/service/log.service.spec.ts new file mode 100644 index 0000000..4a99f77 --- /dev/null +++ b/front/src/app/service/log.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LogService } from './log.service'; + +describe('LogService', () => { + let service: LogService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(LogService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/front/src/app/service/log.service.ts b/front/src/app/service/log.service.ts new file mode 100644 index 0000000..48daa23 --- /dev/null +++ b/front/src/app/service/log.service.ts @@ -0,0 +1,35 @@ +import {Injectable, signal} from '@angular/core'; +import {Log} from "../interface/log"; +import { HttpClient } from "@angular/common/http"; +import {tap} from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class LogService { + + readonly log_list_url = "/api/log/content/list" + + readonly logs = signal({ + list: [] as Log[], + total: 0, + page: 0, + size: 0, + }) + + constructor( + private http: HttpClient, + ) { + } + + get_logs() { + return this.http.get<{status:number, msg:string, data: {list:Log[], total: number}}>(this.log_list_url).pipe( + + ).subscribe(rs => { + if (rs.status === 200) { + this.logs.set({...this.logs(), total: rs.data.total, list: rs.data.list}) + } else { + this.logs.set({...this.logs(), list: []}) + } + })} +} diff --git a/front/src/app/service/msg.service.ts b/front/src/app/service/msg.service.ts new file mode 100644 index 0000000..d3fa626 --- /dev/null +++ b/front/src/app/service/msg.service.ts @@ -0,0 +1,214 @@ +import { Injectable, Inject } from '@angular/core'; +import { Component } from '@angular/core'; +import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar'; +import { + MatSnackBar, + MatSnackBarHorizontalPosition, + MatSnackBarVerticalPosition, +} from '@angular/material/snack-bar'; +import {MatIconModule} from "@angular/material/icon"; + +interface SnackMessage { + type: "success" | "error" | "warning" | "info" + duration: number + data: string +} + +@Injectable({ + providedIn: 'root' +}) +export class MsgService { + horizontalPosition: MatSnackBarHorizontalPosition = 'center'; + verticalPosition: MatSnackBarVerticalPosition = 'top'; + + constructor( + private _snackBar: MatSnackBar + ) { } + + + success(data: string) { + this.open({ type: "success", duration: 1500, data: data }) + } + + info(data: string) { + this.open({ type: "info", duration: 2000, data: data }) + } + + warning(data: string) { + this.open({ type: "warning", duration: 3000, data: data }) + } + + error(data: string) { + this.open({ type: "error", duration: 3500, data: data }) + } + + open(msg: SnackMessage) { + switch (msg.type) { + case "success": + this._snackBar.openFromComponent(SnackMessageSuccess, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['success-snackbar'], + }) + break; + case "info": + this._snackBar.openFromComponent(SnackMessageInfo, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['info-snackbar'], + }) + break + case "warning": + this._snackBar.openFromComponent(SnackMessageWarning, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['warning-snackbar'], + }) + break + case "error": + this._snackBar.openFromComponent(SnackMessageError, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['error-snackbar'], + }) + break + default: + this._snackBar.openFromComponent(SnackMessageInfo, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['info-snackbar'], + }) + break; + } + } +} + + +@Component({ + selector: 'snack-message-success', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-success { + } + `] +}) +export class SnackMessageSuccess { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + + +@Component({ + selector: 'snack-message-info', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-info { + } + `] +}) +export class SnackMessageInfo { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + +@Component({ + selector: 'snack-message-warning', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-warning { + } + `] +}) +export class SnackMessageWarning { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + +@Component({ + selector: 'snack-message-error', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + `] +}) +export class SnackMessageError { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} diff --git a/front/src/app/service/user.service.spec.ts b/front/src/app/service/user.service.spec.ts new file mode 100644 index 0000000..3f804c9 --- /dev/null +++ b/front/src/app/service/user.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserService } from './user.service'; + +describe('UserService', () => { + let service: UserService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/front/src/app/service/user.service.ts b/front/src/app/service/user.service.ts new file mode 100644 index 0000000..5dd842a --- /dev/null +++ b/front/src/app/service/user.service.ts @@ -0,0 +1,119 @@ +import {Injectable, signal, WritableSignal} from '@angular/core'; +import { HttpClient } from "@angular/common/http"; +import {Router} from "@angular/router"; +import {User, NewUser} from "../interface/user"; +import {Response} from "../interface/response"; +import {tap} from "rxjs"; +import {MsgService} from "./msg.service"; + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + + readonly auth_login_url = '/api/user/auth/login' + readonly auth_logout_url = '/api/user/auth/logout' + readonly manage_user_create_url = '/api/user/manage/user/create' + readonly manage_user_update_url= '/api/user/manage/user/update' + readonly manage_user_delete_url = '/api/user/manage/user/delete' + readonly manage_user_list_url = '/api/user/manage/user/list' + readonly init_user: User = {id: 0, username: ""} as User + + readonly user = signal(this.init_user) + readonly user_list: WritableSignal<{ total: number, page: number, size: number, list: User[] }> = signal({ + total: 0, + page: 0, + size: 20, + list: [] as User[], + }) + + constructor( + private msg_srv: MsgService, + private http: HttpClient, + private router: Router, + ) { + this.auth_verify() + } + + auth_login(username: string, password: string) { + this.http.post>(this.auth_login_url, { + username: username, + password: password + }).subscribe(val => { + if (val.status === 200) { + localStorage.setItem("ult-token", val.data.token) + this.user.set(val.data.user) + this.router.navigate(['']) + } + }) + } + + auth_verify() { + this.http.get>(this.auth_login_url).subscribe(rs => { + if (rs.status === 200) { + this.user.set(rs.data.user) + console.log("[D] auth verify user=", this.user()) + } + }) + } + + auth_logout() { + this.http.post>(this.auth_logout_url, {}).subscribe(rs => { + this.router.navigate(['login']).finally(() => { + localStorage.removeItem("ult-token") + this.user.set(this.init_user) + }) + }) + } + + manage_user_create(new_user: NewUser) { + return this.http.post>(this.manage_user_create_url, {...new_user}).pipe( + tap({ + next: (rs) => { + if (rs.status === 200) { + this.manage_user_list() + } + } + }) + ) + } + + manage_user_delete(target: User) { + return this.http.post>(this.manage_user_delete_url, {id: target.id}).pipe( + tap({ + next: (rs) => { + if (rs.status === 200) { + this.msg_srv.success('删除用户成功') + this.manage_user_list() + } else { + this.msg_srv.error(rs.msg) + } + } + }) + ).subscribe() + } + + manage_user_update(body: Object) { + return this.http.post>(this.manage_user_update_url, body).pipe( + tap({next: (rs) => { + if (rs.status === 200) { + this.msg_srv.success("更新用户成功") + this.manage_user_list() + } else { + this.msg_srv.error(rs.msg) + } + }}) + ) + } + + manage_user_list() { + this.http.get>(this.manage_user_list_url, {params: {}}).subscribe(rs => { + if (rs.status === 200) { + this.user_list.set({...this.user_list(), total: rs.data.total, list: rs.data.list}) + // this.user_list = {...this.user_list, total: rs.data.total, list: rs.data.list} + } else { + this.user_list.set({...this.user_list(), list: []}) + } + }) + } +} diff --git a/front/src/assets/.gitkeep b/front/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/front/src/assets/icons/icon-128x128.png b/front/src/assets/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9a2ccdb34a97a06510d04238d8bedd8e063d3a GIT binary patch literal 2875 zcmV-B3&iw^P)C0008_P)t-s0002& z9EbENqopD5@(y0~Ac4&(;F%uw?h$_L3~Rb4@Sh>}?lk4{A#>dpkIgIViW&F%F}(B? zSI#Ko-665>9e3aedGj;V?;nisG~&uE@!BTIsUYpu3W?t$vbrbqDfEpQ^!YHm_Aa;gF0b?~uc09I z!6@*Z9PFwe>h&?n^Do8tFSGY8s`V$5^d*JzB6;ctX7dkLr6Tu{8S%y`?!PDQwIuHI zG}-qu&Gjz3^)0gF9GvO`U-Af9wkP=YGu8Mox6~cC-WHeT8kFq^VeSQ7pd$H{9rwE@ z^R6WGnH}=FCGPPu)!7}c<`|6C27>GXTJ{A?_X0(q9`Ugw@3JB4_A}9$9`~Ie_028v zsUh&KA?~Ce?YSiC@-WNzGRX5SyWSqE_XkL&Ao78}srm!1FA&+8?yi8L-$IsNNZ!*cF`K19I{qap3}Nq#fz+G~(JL z!P+6a-yEdb8KUVJhTtKu(-ot_2%X3WmCFZ_&e$%S$i%~zlzw4hAp7y}?dj;} z;oslf&(FWMvapSBK>PRh^78TU@9*#G&&RT;Pv0?%000M;NklCo2*8x$)93d|qJeXTx^d$M0)Q>! z`}gm+Z3_jCwE9nlIR1gl2~@VekbuzjA)EV~9n0jEwSjjVL?>tH5fm?t5C(&5zrOR?_VJ?7V~TQ{0Iz+3_W zb_+sEP%7frfcpA;EQkuAUq316*s)`^YQym#2}CZyR8GO9!ILIUA^=7JIlrD70Fwf0 zI3@wHK(Qo~L@TuU_3In+)c|w*X&D4+_ij**=C4>G0QIrhM;cvggf(4br>37G5&sHX~uF=B)S^zYw)8g-UR2^NZj^ARvv z%wJ{zx^xMs@(~z8;douJckf;Vqz4P7+qLT(Ks^HZ1%)I)ClCOO1(wQ&g2|I7Z^Zcm z&{fXw0xAs{Fkr+0A($=+5)hxc+sq3-@~&OG1YqMbtbNz6UF(hSq70y>%le-aA%M9! zQY7XF4M2jf*m!lo$dM#45JZT|T>SAP_et{D0L`}mz{oHV(+O^70UtjyEATZp(A5Ae zRt8Yjg@6?70usOYn3!F`rcF41#|{Iqc(EEFcJta;a4guI{8PG^%5`38JD&M>J_WXGQa36$d8eqeqty>YWMGX+X zabqG#M8#V~QmMsB5C3j=YM5Jae^AUhm0)Rya=Bqq( z=ye^iWy=;{P)Y)%qH!Z&dbw}kzI&^50Wb}{?g;?3M#&_BTR@DLLa=WY5`-WIw*n17 z^OvXt%z!ECOHF_wASy5kz>p0amM^ye=wvo3Eqe#B+qX>tFa^GTeTV>{V2MQl6`uQK z&X_Ud_H7}!h=2@oB!0cR`&G6C0W(GhGucKPz@0ASHaeBz7@dLt5*YotwpvBaDlD)wF(FWHW$|-ASBpa5Nm*7V0)!40K(7$ zY+pfKP|g2UaG<^cL0te26cD_5`{P3T`=&s8VMS3y@#4kv0jJ8+(&(gUAvSjG*ki|@ zKY#Y@-Mgb}o;-g2=;5of;7~4ezDY0z2tWY>9=O1nvW(MfIjiL?>}!F!g7V-*kUb&%yArH#n*h9d^XAQ)H*f!U ZUjT_fSx^~10a*Y5002ovPDHLkV1ljCVV(d0 literal 0 HcmV?d00001 diff --git a/front/src/assets/icons/icon-144x144.png b/front/src/assets/icons/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..11702cd7bd67cee3c26172d0b69968b568c210e0 GIT binary patch literal 3077 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/icons/icon-384x384.png b/front/src/assets/icons/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..613ac793e063b1da8d0dc36dcbd1cc0ae620291d GIT binary patch literal 11028 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 literal 0 HcmV?d00001 diff --git a/front/src/assets/icons/icon-72x72.png b/front/src/assets/icons/icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..033724e15f5485c4d86af398a68ca293e6116f72 GIT binary patch literal 1995 zcmV;+2Q>JJP)291V+*= z^06lJ@iNwq8T9WTgUAk`+9JF2BZb^3%m;Ym7q0XGMcgOF zo*(n@GuZeu%=Iw5@*;!h3u5#YR+k?7ogMGqEYs})RJtkn_%qPMDD2W6x#A(I$Sm}o zA^G<$pUy4t>@(lADEhM@>G?Ft@+z(JAaC^$NSYe!pBv}r0bck9LaiqJxheViGtbl@ zy}}5d^Cy_k1%~qyQ1%W*(l7GuH0Hbrq4E(+ix>0pA#9i%>7pLz?J&~A37p9UhRiMW z^fTl6FSzm!Tkir^@&Zxx15Nb|N%sguuqOGsDE7%K^7t~w^AA?`3QY9^NuwkBv?uuV zG0F8Uv-A#5_yj_%CHkKs`M)Xk%`NiuGuQbt!SpV^`7ylqF1h$Fukg`I;a1 zlpOZND)p%%^`9X1u_g4sDDk2n@w_GM^fJx(Gt1j0#_}w=_%FED8maawpV}9m^e340 zCzSOkk@O{s+XQy!2W;&KW9tH5?E+f#4^s6BQK%*Rr6TsMBlMRX^t&hWogMPTDe<@_ z@tGX(wIuJjBX;8kfijmgE?a^d*MW27~eIY}!0%!3FTBIQJjv4c+A@Ig2@4+YSr628< z8ttMT>hd((@i5NuF2&pw9<Kg+s;a1{rKNOoa8*@RRaI3rE*=;6@9*Q|U3Qy|k;Vs;a80s;a80s*R0^h=hc4RaI3vEiEf^xaC#=00bjRL_t(o!|l{%P*hPA z!0{_EF$B`*s`{HM-~hB}QNAp^;Xci8 z+_(->TwGk{EjUgHNt^X9W%!s*`}Xa-0n+tr*RIvcye~Gx*U4!SKvJnm2LorB8XFsf zw0G}bl!!>azD~P$3yz7&^y%VC{>rANC>hV43sPXE^FB3cVSfE={Y!i5WKlgv$63T@c1;pWYo2vrh?3j6svI9y!2)?^Jr=Nb`_4jedu z5>i1yK?TL3LVh+j7XjL}W(_#!h*%aDK$)2>!Gho*#z_LS3n428WNrbOL1@)uLHTSh zU%IplAuB7ZIpUDHxy3xlY(J#CXwrn}WOMoQrS|9mOdb4jgU+fdI~ADRDRugEnC}KM5j_8V%GckSliprk%>dg zp^ccLGc^wm);pZ1hc@gDD;JGV6^qPe+k5~@y3RjQDLgm`LH?dsLXd-ecC zSdiOcXcIN8o}yAEhKBZ~hFWMF3p#=wKHQ%gwn|A+B_@Wpq)!6K(UA!q6*@xA3c9-9 zzI{76IkXTp4hVSf=y+i}19|~{`BI;nrK?f0OHN9n#-jjoW2mMx#-y!%?b1ExN}#UtmI8FnW}c;jYoVI&>)9?$#}O6YKB1 zoduQMvL#aQpok22_vg<+diG53q;CG})|FvExg#SZi_&yNM8t2Y9JLw=P#zZK;o(6~ zjIdn4qIdr59vOh@lPp);0QB}P;m8m~xO$YAu_)4o4=TfiM({zynGoTO1vTV_8j=6n zL~Scqo;>;B#EGvjU#{5v?d~0Zr@_pbGZFIoEv>k}`OV!i+z>dJrI!~_AbGxnliu*3 zRPc<@SxZPOy*myky}nb36B;;Q=qzMuIqCGNtq(jwf|L4jLV(QDc6RdQNhm$^gpYSTjcV2; dIpy?!`T;k-MF8k)@eTk0002ovPDHLkV1mgk?e+iw literal 0 HcmV?d00001 diff --git a/front/src/assets/icons/icon-96x96.png b/front/src/assets/icons/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..3090dc2d8f93429535c667e616e367c010d941ad GIT binary patch literal 2404 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 Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/front/src/index.html b/front/src/index.html new file mode 100644 index 0000000..51432a4 --- /dev/null +++ b/front/src/index.html @@ -0,0 +1,18 @@ + + + + + Front + + + + + + + + + + + + + diff --git a/front/src/main.ts b/front/src/main.ts new file mode 100644 index 0000000..35b00f3 --- /dev/null +++ b/front/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/front/src/manifest.webmanifest b/front/src/manifest.webmanifest new file mode 100644 index 0000000..d07c0e9 --- /dev/null +++ b/front/src/manifest.webmanifest @@ -0,0 +1,59 @@ +{ + "name": "front", + "short_name": "front", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "./", + "start_url": "./", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +} diff --git a/front/src/proxy.conf.json b/front/src/proxy.conf.json new file mode 100644 index 0000000..62a2dd0 --- /dev/null +++ b/front/src/proxy.conf.json @@ -0,0 +1,6 @@ +{ + "/api": { + "target": "http://127.0.0.1:8080", + "secure": false + } +} diff --git a/front/src/styles.scss b/front/src/styles.scss new file mode 100644 index 0000000..75fb388 --- /dev/null +++ b/front/src/styles.scss @@ -0,0 +1,70 @@ +/* You can add global styles to this file, and also import other style files */ +:root { + --primary-color: rgb(63, 81, 181); + --my-primary-color: rgb(67, 80, 175); + --my-success-text-color: rgb(94, 140, 117); + --my-success-backgroud-color: rgb(203, 228, 216); + --my-warning-text-color: rgb(132, 113, 56); + --my-warning-backgroud-color: rgb(254, 243, 200); + --my-error-text-color: rgb(136, 52, 61); + --my-error-backgroud-color: rgb(246, 209, 213); + --my-info-text-color: rgb(60, 64, 69); + --my-info-backgroud-color: rgb(222, 223, 225); + + font-size: 8px; +} + +html, body { + margin: 0; + padding: 0; + height: 100vh; + max-height: 100vh; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: Roboto, "Helvetica Neue", sans-serif; +} + +.mat-mdc-snack-bar-container { + + &.info-snackbar { + --mdc-snackbar-container-color: var(--my-info-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-info-text-color); + } + + &.success-snackbar { + --mdc-snackbar-container-color: var(--my-success-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-success-text-color); + } + + &.warning-snackbar { + --mdc-snackbar-container-color: var(--my-warning-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-warning-text-color); + } + + &.error-snackbar { + --mdc-snackbar-container-color: var(--my-error-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-error-text-color); + } +} + +.snack-message { + display: flex; + align-items: center; + height: 100%; + + div { + height: 100%; + display: flex; + align-items: center; + + &.snack-message-content { + margin-left: 1rem; + } + } +} diff --git a/front/src/tool.ts b/front/src/tool.ts new file mode 100644 index 0000000..6bfae5a --- /dev/null +++ b/front/src/tool.ts @@ -0,0 +1,6 @@ +export function ArrayEquals(a: any[], b: any[]): boolean { + return Array.isArray(a) && + Array.isArray(b) && + a.length === b.length && + a.every((val, index) => val === b[index]); +} diff --git a/front/tsconfig.app.json b/front/tsconfig.app.json new file mode 100644 index 0000000..374cc9d --- /dev/null +++ b/front/tsconfig.app.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/front/tsconfig.json b/front/tsconfig.json new file mode 100644 index 0000000..678336b --- /dev/null +++ b/front/tsconfig.json @@ -0,0 +1,32 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/front/tsconfig.spec.json b/front/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/front/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..25fbbd1 --- /dev/null +++ b/go.mod @@ -0,0 +1,67 @@ +module ultone + +go 1.20 + +require ( + gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d + github.com/elastic/go-elasticsearch/v7 v7.17.10 + github.com/glebarez/sqlite v1.10.0 + github.com/go-redis/redis/v8 v8.11.5 + github.com/golang-jwt/jwt/v5 v5.2.0 + github.com/google/uuid v1.6.0 + github.com/hashicorp/golang-lru/v2 v2.0.7 + github.com/jackc/pgtype v1.12.0 + github.com/jedib0t/go-pretty/v6 v6.5.9 + github.com/loveuer/esgo2dump v0.3.3 + github.com/loveuer/nf v0.2.4 + github.com/loveuer/ngorm/v2 v2.1.1 + github.com/matoous/go-nanoid/v2 v2.1.0 + github.com/rabbitmq/amqp091-go v1.10.0 + github.com/samber/lo v1.39.0 + github.com/sirupsen/logrus v1.9.2 + github.com/spf13/cast v1.6.0 + github.com/tdewolff/minify/v2 v2.20.16 + golang.org/x/crypto v0.14.0 + google.golang.org/grpc v1.50.0 + gorm.io/driver/mysql v1.4.5 + gorm.io/driver/postgres v1.4.4 + gorm.io/gorm v1.25.5 +) + +require ( + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/facebook/fbthrift v0.31.1-0.20211129061412-801ed7f9f295 // indirect + github.com/fatih/color v1.17.0 // indirect + github.com/glebarez/go-sqlite v1.21.2 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.13.0 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.1 // indirect + github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgx/v4 v4.17.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/tdewolff/parse/v2 v2.7.11 // indirect + github.com/vesoft-inc/nebula-go/v3 v3.5.0 // indirect + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c // indirect + google.golang.org/protobuf v1.30.0 // indirect + modernc.org/libc v1.22.5 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.5.0 // indirect + modernc.org/sqlite v1.23.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..2728bbe --- /dev/null +++ b/go.sum @@ -0,0 +1,381 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d h1:TpEOdRGqwzxx+DaN18nFE+g4EQYjneZOO1jcHtSon/g= +gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d/go.mod h1:QtcL846XUtSnhmW6TZAujUQ9V5jalY7frxzZOs00kFI= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elastic/go-elasticsearch/v7 v7.17.10 h1:TCQ8i4PmIJuBunvBS6bwT2ybzVFxxUhhltAs3Gyu1yo= +github.com/elastic/go-elasticsearch/v7 v7.17.10/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/facebook/fbthrift v0.31.1-0.20211129061412-801ed7f9f295 h1:ZA+qQ3d2In0RNzVpk+D/nq1sjDSv+s1Wy2zrAPQAmsg= +github.com/facebook/fbthrift v0.31.1-0.20211129061412-801ed7f9f295/go.mod h1:2tncLx5rmw69e5kMBv/yJneERbzrr1yr5fdlnTbu8lU= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= +github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= +github.com/glebarez/sqlite v1.10.0 h1:u4gt8y7OND/cCei/NMHmfbLxF6xP2wgKcT/BJf2pYkc= +github.com/glebarez/sqlite v1.10.0/go.mod h1:IJ+lfSOmiekhQsFTJRx/lHtGYmCdtAiTaf5wI9u5uHA= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw= +github.com/golang-jwt/jwt/v5 v5.2.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= +github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= +github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= +github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= +github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/loveuer/esgo2dump v0.3.3 h1:/AidoaFV7bDRyT1ycyBKs4XGmyVs2ShaUKrpEBiUWkM= +github.com/loveuer/esgo2dump v0.3.3/go.mod h1:thZvfsO0kd7Ck3TA0jc9rRc4CuIa4Iuiq6tF3tCqXEY= +github.com/loveuer/nf v0.2.4 h1:2xoGLXCf9Yfp7MndHtxwjy97c21rDIdLiOEWxrL2FJ4= +github.com/loveuer/nf v0.2.4/go.mod h1:mR3Hc3j6kivKS+QwaYULYuiZOLQCfcaRPTtK260pBaw= +github.com/loveuer/ngorm/v2 v2.1.1 h1:v+ut5BjeSBFU87o800pI8Q3fXEOUAkvk5+btMw2oOEc= +github.com/loveuer/ngorm/v2 v2.1.1/go.mod h1:BVhFGQsRMdcf08MtmwwRihwCR/x7wDd0Fzy8Xj+edM0= +github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE= +github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= +github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= +github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= +github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/tdewolff/minify/v2 v2.20.16 h1:/C8dtRkxLTIyUlKlBz46gDiktCrE8a6+c1gTrnPFz+U= +github.com/tdewolff/minify/v2 v2.20.16/go.mod h1:/FvxV9KaTrFu35J9I2FhRvWSBxcHj8sDSdwBFh5voxM= +github.com/tdewolff/parse/v2 v2.7.11 h1:v+W45LnzmjndVlfqPCT5gGjAAZKd1GJGOPJveTIkBY8= +github.com/tdewolff/parse/v2 v2.7.11/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= +github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= +github.com/vesoft-inc/nebula-go/v3 v3.5.0 h1:2ZSkoBxtIfs15AXJXqrAPDPd0Z9HrzKR7YKXPqlJcR0= +github.com/vesoft-inc/nebula-go/v3 v3.5.0/go.mod h1:+sXv05jYQBARdTbTcIEsWVXCnF/6ttOlDK35xQ6m54s= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= +golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.50.0 h1:fPVVDxY9w++VjTZsYvXWqEf9Rqar/e+9zYfxKK+W+YU= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.4.5 h1:u1lytId4+o9dDaNcPCFzNv7h6wvmc92UjNk3z8enSBU= +gorm.io/driver/mysql v1.4.5/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc= +gorm.io/driver/postgres v1.4.4 h1:zt1fxJ+C+ajparn0SteEnkoPg0BQ6wOWXEQ99bteAmw= +gorm.io/driver/postgres v1.4.4/go.mod h1:whNfh5WhhHs96honoLjBAMwJGYEuA3m1hvgUbNXhPCw= +gorm.io/gorm v1.23.7/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls= +gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= +modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= +modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= diff --git a/internal/api/api.go b/internal/api/api.go new file mode 100644 index 0000000..4deb205 --- /dev/null +++ b/internal/api/api.go @@ -0,0 +1,66 @@ +package api + +import ( + "context" + "github.com/loveuer/nf" + "time" + "ultone/internal/handler" + "ultone/internal/middleware/auth" + "ultone/internal/middleware/front" + "ultone/internal/middleware/logger" + "ultone/internal/middleware/oplog" + "ultone/internal/middleware/privilege" + "ultone/internal/model" + "ultone/internal/opt" +) + +func initApp(ctx context.Context) *nf.App { + engine := nf.New(nf.Config{DisableLogger: true}) + engine.Use(logger.New()) + + // todo: add project prefix, if you need + // for example: app := engine.Group("/api/{project}") + app := engine.Group("/api") + app.Get("/available", func(c *nf.Ctx) error { + return c.JSON(nf.Map{"status": 200, "ok": true, "time": time.Now()}) + }) + + { + api := app.Group("/user") + api.Post("/auth/login", oplog.NewOpLog(ctx), handler.AuthLogin) + api.Get("/auth/login", auth.NewAuth(), handler.AuthVerify) + api.Post("/auth/logout", auth.NewAuth(), oplog.NewOpLog(ctx), handler.AuthLogout) + + mng := api.Group("/manage") + mng.Use(auth.NewAuth(), privilege.Verify( + privilege.RelationAnd, + model.PrivilegeUserManage, + )) + + mng.Get("/user/list", handler.ManageUserList) + mng.Post("/user/create", oplog.NewOpLog(ctx), handler.ManageUserCreate) + mng.Post("/user/update", oplog.NewOpLog(ctx), handler.ManageUserUpdate) + mng.Post("/user/delete", oplog.NewOpLog(ctx), handler.ManageUserDelete) + } + + { + api := app.Group("/log") + api.Use(auth.NewAuth(), privilege.Verify(privilege.RelationAnd, model.PrivilegeOpLog)) + api.Get("/category/list", handler.LogCategories()) + api.Get("/content/list", handler.LogList) + } + + { + // todo: 替换 xxx + // todo: 这里写你的模块和接口 + api := app.Group("/xxx") + api.Use(auth.NewAuth()) + _ = api // todo: 添加自己的接口后删除该行 + } + + if opt.EnableFront { + engine.Use(front.NewFront(&front.DefaultFront, "dist/front/browser")) + } + + return engine +} diff --git a/internal/api/start.go b/internal/api/start.go new file mode 100644 index 0000000..840aa93 --- /dev/null +++ b/internal/api/start.go @@ -0,0 +1,43 @@ +package api + +import ( + "context" + "fmt" + "github.com/loveuer/nf/nft/log" + "net" + "ultone/internal/opt" + "ultone/internal/tool" +) + +func Start(ctx context.Context) error { + + app := initApp(ctx) + ready := make(chan bool) + + ln, err := net.Listen("tcp", opt.Cfg.Listen.Http) + if err != nil { + return fmt.Errorf("api.MustStart: net listen tcp address=%v err=%v", opt.Cfg.Listen.Http, err) + } + + go func() { + ready <- true + + if err = app.RunListener(ln); err != nil { + log.Panic("api.MustStart: app run err=%v", err) + } + }() + + <-ready + + go func() { + ready <- true + <-ctx.Done() + if err = app.Shutdown(tool.Timeout(1)); err != nil { + log.Error("api.MustStart: app shutdown err=%v", err) + } + }() + + <-ready + + return nil +} diff --git a/internal/cmd/execute.go b/internal/cmd/execute.go new file mode 100644 index 0000000..028cf2f --- /dev/null +++ b/internal/cmd/execute.go @@ -0,0 +1,37 @@ +package cmd + +import ( + "context" + "ultone/internal/api" + "ultone/internal/controller" + "ultone/internal/database/cache" + "ultone/internal/database/db" + "ultone/internal/model" + "ultone/internal/opt" + "ultone/internal/tool" +) + +var ( + filename string +) + +func Execute(ctx context.Context) error { + + tool.Must(opt.Init(filename)) + tool.Must(db.Init()) + tool.Must(cache.Init()) + + // todo: if elastic search required + // tool.Must(es.Init()) + + // todo: if nebula required + // tool.Must(nebula.Init(ctx, opt.Cfg.Nebula)) + + tool.Must(model.Init(db.New())) + tool.Must(controller.Init()) + tool.Must(api.Start(ctx)) + + <-ctx.Done() + + return nil +} diff --git a/internal/cmd/init.go b/internal/cmd/init.go new file mode 100644 index 0000000..5eef46f --- /dev/null +++ b/internal/cmd/init.go @@ -0,0 +1,16 @@ +package cmd + +import ( + "flag" + "time" + "ultone/internal/opt" +) + +func init() { + time.Local = time.FixedZone("CST", 8*3600) + + flag.StringVar(&filename, "c", "etc/config.json", "config json file path") + flag.BoolVar(&opt.Debug, "debug", false, "") + + flag.Parse() +} diff --git a/internal/controller/impl.go b/internal/controller/impl.go new file mode 100644 index 0000000..bc483f9 --- /dev/null +++ b/internal/controller/impl.go @@ -0,0 +1,12 @@ +package controller + +var ( + // UserController todo: 可以实现自己的 controller + UserController userController +) + +func Init() error { + UserController = uc{} + + return nil +} diff --git a/internal/controller/user.go b/internal/controller/user.go new file mode 100644 index 0000000..a7f08d2 --- /dev/null +++ b/internal/controller/user.go @@ -0,0 +1,154 @@ +package controller + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/spf13/cast" + "gorm.io/gorm" + "strings" + "time" + "ultone/internal/database/cache" + "ultone/internal/database/db" + "ultone/internal/log" + "ultone/internal/model" + "ultone/internal/opt" + "ultone/internal/tool" +) + +type userController interface { + GetUser(c *nf.Ctx, id uint64) (*model.User, error) + GetUserByToken(c *nf.Ctx, token string) (*model.User, error) + CacheUser(c *nf.Ctx, user *model.User) error + CacheToken(c *nf.Ctx, token string, user *model.User) error + RmUserCache(c *nf.Ctx, id uint64) error + DeleteUser(c *nf.Ctx, id uint64) error +} + +type uc struct{} + +var _ userController = (*uc)(nil) + +func (u uc) GetUser(c *nf.Ctx, id uint64) (*model.User, error) { + var ( + err error + target = new(model.User) + key = fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, id) + bs []byte + ) + + if opt.EnableUserCache { + if bs, err = cache.Client.Get(tool.Timeout(3), key); err != nil { + log.Warn(c, "controller.GetUser: get user by cache key=%s err=%v", key, err) + goto ByDB + } + + if err = json.Unmarshal(bs, target); err != nil { + log.Warn(c, "controller.GetUser: json unmarshal key=%s by=%s err=%v", key, string(bs), err) + goto ByDB + } + + return target, nil + } + +ByDB: + if err = db.New(tool.Timeout(3)). + Model(&model.User{}). + Where("id = ?", id). + Take(target). + Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + // tips: 公开项目需要考虑击穿处理 + return target, resp.NewError(400, "目标不存在", err, nil) + } + + return target, resp.NewError(500, "", err, nil) + } + + if opt.EnableUserCache { + if err = u.CacheUser(c, target); err != nil { + log.Warn(c, "controller.GetUser: cache user key=%s err=%v", key, err) + } + } + + return target, nil +} + +func (u uc) GetUserByToken(c *nf.Ctx, token string) (*model.User, error) { + strs := strings.Split(token, ".") + if len(strs) != 3 { + return nil, fmt.Errorf("controller.GetUserByToken: jwt token invalid, token=%s", token) + } + + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, strs[2]) + bs, err := cache.Client.Get(tool.Timeout(3), key) + if err != nil { + return nil, err + } + + log.Debug(c, "controller.GetUserByToken: key=%s cache bytes=%s", key, string(bs)) + + userId := cast.ToUint64(string(bs)) + if userId == 0 { + return nil, fmt.Errorf("controller.GetUserByToken: bs=%s cast to uint64 err", string(bs)) + } + + var op *model.User + + if op, err = u.GetUser(c, userId); err != nil { + return nil, err + } + + return op, nil +} + +func (u uc) CacheUser(c *nf.Ctx, target *model.User) error { + key := fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, target.Id) + return cache.Client.Set(tool.Timeout(3), key, target) +} + +func (u uc) CacheToken(c *nf.Ctx, token string, user *model.User) error { + strs := strings.Split(token, ".") + if len(strs) != 3 { + return fmt.Errorf("controller.CacheToken: jwt token invalid") + } + + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, strs[2]) + return cache.Client.SetEx(tool.Timeout(3), key, user.Id, opt.TokenTimeout) +} +func (u uc) RmUserCache(c *nf.Ctx, id uint64) error { + key := fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, id) + return cache.Client.Del(tool.Timeout(3), key) +} + +func (u uc) DeleteUser(c *nf.Ctx, id uint64) error { + var ( + err error + now = time.Now() + username = "CONCAT(username, '@del')" + ) + + if opt.Cfg.DB.Type == "sqlite" { + username = "username || '@del'" + } + + if err = db.New(tool.Timeout(5)). + Model(&model.User{}). + Where("id = ?", id). + Updates(map[string]any{ + "deleted_at": now.UnixMilli(), + "username": gorm.Expr(username), + }).Error; err != nil { + return resp.NewError(500, "", err, nil) + } + + if opt.EnableUserCache { + if err = u.RmUserCache(c, id); err != nil { + log.Warn(c, "controller.DeleteUser: rm user=%d cache err=%v", id, err) + } + } + + return nil +} diff --git a/internal/database/cache/cache_lru.go b/internal/database/cache/cache_lru.go new file mode 100644 index 0000000..932208a --- /dev/null +++ b/internal/database/cache/cache_lru.go @@ -0,0 +1,109 @@ +package cache + +import ( + "context" + "github.com/hashicorp/golang-lru/v2/expirable" + _ "github.com/hashicorp/golang-lru/v2/expirable" + "time" + "ultone/internal/interfaces" +) + +var _ interfaces.Cacher = (*_lru)(nil) + +type _lru struct { + client *expirable.LRU[string, *_lru_value] +} + +type _lru_value struct { + duration time.Duration + last time.Time + bs []byte +} + +func (l *_lru) Get(ctx context.Context, key string) ([]byte, error) { + v, ok := l.client.Get(key) + if !ok { + return nil, ErrorKeyNotFound + } + + if v.duration == 0 { + return v.bs, nil + } + + if time.Now().Sub(v.last) > v.duration { + l.client.Remove(key) + return nil, ErrorKeyNotFound + } + + return v.bs, nil +} + +func (l *_lru) GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) { + v, ok := l.client.Get(key) + if !ok { + return nil, ErrorKeyNotFound + } + + if v.duration == 0 { + return v.bs, nil + } + + now := time.Now() + + if now.Sub(v.last) > v.duration { + l.client.Remove(key) + return nil, ErrorKeyNotFound + } + + l.client.Add(key, &_lru_value{ + duration: duration, + last: now, + bs: v.bs, + }) + + return v.bs, nil +} + +func (l *_lru) Set(ctx context.Context, key string, value any) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + l.client.Add(key, &_lru_value{ + duration: 0, + last: time.Now(), + bs: bs, + }) + + return nil +} + +func (l *_lru) SetEx(ctx context.Context, key string, value any, duration time.Duration) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + l.client.Add(key, &_lru_value{ + duration: duration, + last: time.Now(), + bs: bs, + }) + + return nil +} + +func (l *_lru) Del(ctx context.Context, keys ...string) error { + for _, key := range keys { + l.client.Remove(key) + } + + return nil +} + +func newLRUCache() (interfaces.Cacher, error) { + client := expirable.NewLRU[string, *_lru_value](0, nil, 0) + + return &_lru{client: client}, nil +} diff --git a/internal/database/cache/cache_memory.go b/internal/database/cache/cache_memory.go new file mode 100644 index 0000000..ab59a7d --- /dev/null +++ b/internal/database/cache/cache_memory.go @@ -0,0 +1,65 @@ +package cache + +import ( + "context" + "fmt" + "time" + "ultone/internal/interfaces" + + "gitea.com/taozitaozi/gredis" +) + +var _ interfaces.Cacher = (*_mem)(nil) + +type _mem struct { + client *gredis.Gredis +} + +func (m *_mem) Get(ctx context.Context, key string) ([]byte, error) { + v, err := m.client.Get(key) + if err != nil { + return nil, err + } + + bs, ok := v.([]byte) + if !ok { + return nil, fmt.Errorf("invalid value type=%T", v) + } + + return bs, nil +} + +func (m *_mem) GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) { + v, err := m.client.GetEx(key, duration) + if err != nil { + return nil, err + } + + bs, ok := v.([]byte) + if !ok { + return nil, fmt.Errorf("invalid value type=%T", v) + } + + return bs, nil +} + +func (m *_mem) Set(ctx context.Context, key string, value any) error { + bs, err := handleValue(value) + if err != nil { + return err + } + return m.client.Set(key, bs) +} + +func (m *_mem) SetEx(ctx context.Context, key string, value any, duration time.Duration) error { + bs, err := handleValue(value) + if err != nil { + return err + } + return m.client.SetEx(key, bs, duration) +} + +func (m *_mem) Del(ctx context.Context, keys ...string) error { + m.client.Delete(keys...) + return nil +} diff --git a/internal/database/cache/cache_redis.go b/internal/database/cache/cache_redis.go new file mode 100644 index 0000000..f11f604 --- /dev/null +++ b/internal/database/cache/cache_redis.go @@ -0,0 +1,54 @@ +package cache + +import ( + "context" + "github.com/go-redis/redis/v8" + "time" +) + +type _redis struct { + client *redis.Client +} + +func (r *_redis) Get(ctx context.Context, key string) ([]byte, error) { + result, err := r.client.Get(ctx, key).Result() + if err != nil { + return nil, err + } + + return []byte(result), nil +} + +func (r *_redis) GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) { + result, err := r.client.GetEx(ctx, key, duration).Result() + if err != nil { + return nil, err + } + + return []byte(result), nil +} + +func (r *_redis) Set(ctx context.Context, key string, value any) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + _, err = r.client.Set(ctx, key, bs, redis.KeepTTL).Result() + return err +} + +func (r *_redis) SetEx(ctx context.Context, key string, value any, duration time.Duration) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + _, err = r.client.SetEX(ctx, key, bs, duration).Result() + + return err +} + +func (r *_redis) Del(ctx context.Context, keys ...string) error { + return r.client.Del(ctx, keys...).Err() +} diff --git a/internal/database/cache/client.go b/internal/database/cache/client.go new file mode 100644 index 0000000..cd544dc --- /dev/null +++ b/internal/database/cache/client.go @@ -0,0 +1,33 @@ +package cache + +import ( + "encoding/json" + "ultone/internal/interfaces" +) + +var ( + Client interfaces.Cacher +) + +type encoded_value interface { + MarshalBinary() ([]byte, error) +} + +type decoded_value interface { + UnmarshalBinary(bs []byte) error +} + +func handleValue(value any) ([]byte, error) { + var ( + bs []byte + err error + ) + + if imp, ok := value.(encoded_value); ok { + bs, err = imp.MarshalBinary() + } else { + bs, err = json.Marshal(value) + } + + return bs, err +} diff --git a/internal/database/cache/error.go b/internal/database/cache/error.go new file mode 100644 index 0000000..f0798b5 --- /dev/null +++ b/internal/database/cache/error.go @@ -0,0 +1,7 @@ +package cache + +import "errors" + +var ( + ErrorKeyNotFound = errors.New("key not found") +) diff --git a/internal/database/cache/init.go b/internal/database/cache/init.go new file mode 100644 index 0000000..ba3d0a5 --- /dev/null +++ b/internal/database/cache/init.go @@ -0,0 +1,70 @@ +package cache + +import ( + "fmt" + "gitea.com/taozitaozi/gredis" + "github.com/go-redis/redis/v8" + "net/url" + "strings" + "ultone/internal/opt" + "ultone/internal/tool" +) + +func Init() error { + + var ( + err error + ) + + strs := strings.Split(opt.Cfg.Cache.Uri, "::") + + switch strs[0] { + case "memory": + gc := gredis.NewGredis(1024 * 1024) + Client = &_mem{client: gc} + case "lru": + if Client, err = newLRUCache(); err != nil { + return err + } + case "redis": + var ( + ins *url.URL + err error + ) + + if len(strs) != 2 { + return fmt.Errorf("cache.Init: invalid cache uri: %s", opt.Cfg.Cache.Uri) + } + + uri := strs[1] + + if !strings.Contains(uri, "://") { + uri = fmt.Sprintf("redis://%s", uri) + } + + if ins, err = url.Parse(uri); err != nil { + return fmt.Errorf("cache.Init: url parse cache uri: %s, err: %s", opt.Cfg.Cache.Uri, err.Error()) + } + + addr := ins.Host + username := ins.User.Username() + password, _ := ins.User.Password() + + var rc *redis.Client + rc = redis.NewClient(&redis.Options{ + Addr: addr, + Username: username, + Password: password, + }) + + if err = rc.Ping(tool.Timeout(5)).Err(); err != nil { + return fmt.Errorf("cache.Init: redis ping err: %s", err.Error()) + } + + Client = &_redis{client: rc} + default: + return fmt.Errorf("cache type %s not support", strs[0]) + } + + return nil +} diff --git a/internal/database/db/client.go b/internal/database/db/client.go new file mode 100644 index 0000000..52d0d7b --- /dev/null +++ b/internal/database/db/client.go @@ -0,0 +1,38 @@ +package db + +import ( + "context" + "gorm.io/gorm" + "ultone/internal/opt" + "ultone/internal/tool" +) + +var ( + cli = &client{} +) + +type client struct { + cli *gorm.DB + ttype string +} + +func Type() string { + return cli.ttype +} + +func New(ctxs ...context.Context) *gorm.DB { + var ctx context.Context + if len(ctxs) > 0 && ctxs[0] != nil { + ctx = ctxs[0] + } else { + ctx = tool.Timeout(30) + } + + session := cli.cli.Session(&gorm.Session{Context: ctx}) + + if opt.Debug { + session = session.Debug() + } + + return session +} diff --git a/internal/database/db/init.go b/internal/database/db/init.go new file mode 100644 index 0000000..e311e1c --- /dev/null +++ b/internal/database/db/init.go @@ -0,0 +1,46 @@ +package db + +import ( + "fmt" + "github.com/glebarez/sqlite" + "gorm.io/driver/mysql" + "gorm.io/driver/postgres" + "gorm.io/gorm" + "strings" + "ultone/internal/opt" +) + +func Init() error { + strs := strings.Split(opt.Cfg.DB.Uri, "::") + + if len(strs) != 2 { + return fmt.Errorf("db.Init: opt db uri invalid: %s", opt.Cfg.DB.Uri) + } + + cli.ttype = strs[0] + + var ( + err error + dsn = strs[1] + ) + + switch strs[0] { + case "sqlite": + opt.Cfg.DB.Type = "sqlite" + cli.cli, err = gorm.Open(sqlite.Open(dsn)) + case "mysql": + opt.Cfg.DB.Type = "mysql" + cli.cli, err = gorm.Open(mysql.Open(dsn)) + case "postgres": + opt.Cfg.DB.Type = "postgres" + cli.cli, err = gorm.Open(postgres.Open(dsn)) + default: + return fmt.Errorf("db type only support: [sqlite, mysql, postgres], unsupported db type: %s", strs[0]) + } + + if err != nil { + return fmt.Errorf("db.Init: open %s with dsn:%s, err: %w", strs[0], dsn, err) + } + + return nil +} diff --git a/internal/database/es/client.go b/internal/database/es/client.go new file mode 100644 index 0000000..c091952 --- /dev/null +++ b/internal/database/es/client.go @@ -0,0 +1,29 @@ +package es + +import ( + elastic "github.com/elastic/go-elasticsearch/v7" + "github.com/loveuer/esgo2dump/xes/es7" + "github.com/loveuer/nf/nft/log" + "net/url" + "ultone/internal/opt" + "ultone/internal/tool" +) + +var ( + Client *elastic.Client +) + +func Init() error { + ins, err := url.Parse(opt.Cfg.ES.Uri) + if err != nil { + return err + } + + log.Debug("es.InitClient url parse uri: %s, result: %+v", opt.Cfg.ES.Uri, ins) + + if Client, err = es7.NewClient(tool.Timeout(10), ins); err != nil { + return err + } + + return nil +} diff --git a/internal/database/mq/client.go b/internal/database/mq/client.go new file mode 100644 index 0000000..1660282 --- /dev/null +++ b/internal/database/mq/client.go @@ -0,0 +1,89 @@ +package mq + +import ( + "crypto/tls" + "fmt" + amqp "github.com/rabbitmq/amqp091-go" + "net/url" + "sync" +) + +// Init - init mq client: +// - @param.uri: "{scheme[amqp/amqps]}://{username}:{password}@{endpoint}/{virtual_host}" +// - @param.certs: with amqps, certs[0]=client crt bytes, certs[0]=client key bytes + +type _client struct { + sync.Mutex + uri string + tlsCfg *tls.Config + conn *amqp.Connection + ch *amqp.Channel + consume <-chan amqp.Delivery + queue *queueOption +} + +func (c *_client) open() error { + var ( + err error + ) + + c.Lock() + defer c.Unlock() + + if c.tlsCfg != nil { + c.conn, err = amqp.DialTLS(c.uri, c.tlsCfg) + } else { + c.conn, err = amqp.Dial(c.uri) + } + + if err != nil { + return err + } + + if c.ch, err = c.conn.Channel(); err != nil { + return err + } + + if client.queue != nil && client.queue.name != "" { + if _, err = client.ch.QueueDeclare( + client.queue.name, + client.queue.durable, + client.queue.autoDelete, + client.queue.exclusive, + client.queue.noWait, + client.queue.args, + ); err != nil { + return fmt.Errorf("declare queue: %s, err: %w", client.queue.name, err) + } + } + + return nil +} + +var ( + client = &_client{ + uri: "amqp://guest:guest@127.0.0.1:5672/", + tlsCfg: nil, + } +) + +// Init - init mq client +func Init(opts ...OptionFn) error { + var ( + err error + ) + + for _, fn := range opts { + fn(client) + } + + if _, err = url.Parse(client.uri); err != nil { + return fmt.Errorf("url parse uri err: %w", err) + } + + if err = client.open(); err != nil { + return err + } + + return nil +} diff --git a/internal/database/mq/client_test.go b/internal/database/mq/client_test.go new file mode 100644 index 0000000..5b53e70 --- /dev/null +++ b/internal/database/mq/client_test.go @@ -0,0 +1,111 @@ +package mq + +import ( + "context" + "crypto/tls" + "crypto/x509" + amqp "github.com/rabbitmq/amqp091-go" + "os" + "os/signal" + "strconv" + "syscall" + "testing" + "time" +) + +func TestConsume(t *testing.T) { + clientCert, err := tls.LoadX509KeyPair( + "/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/client.crt", + "/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/client.key", + ) + if err != nil { + t.Fatal(err.Error()) + } + + ca, err := os.ReadFile("/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/ca.crt") + if err != nil { + t.Fatal(err.Error()) + } + + caCertPool := x509.NewCertPool() + if !caCertPool.AppendCertsFromPEM(ca) { + t.Fatal("ca pool append ca crt err") + } + + if err := Init( + WithURI("amqps://admin:password@mq.dev:5671/export"), + WithTLS(&tls.Config{ + Certificates: []tls.Certificate{clientCert}, + RootCAs: caCertPool, + InsecureSkipVerify: true, + }), + WithQueueDeclare("export", false, false, false, false, amqp.Table{"x-max-priority": 100}), + ); err != nil { + t.Fatal(err) + } + + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + defer cancel() + + ch, err := Consume(ctx, "export", &ConsumeOpt{MaxReconnection: -1}) + if err != nil { + t.Fatal(err) + } + + t.Log("[TEST] start consume msg") + for msg := range ch { + t.Logf("[TEST] [%s] [msg: %s]", time.Now().Format("060102T150405"), string(msg.Body)) + _ = msg.Ack(false) + } +} + +func TestPublish(t *testing.T) { + clientCert, err := tls.LoadX509KeyPair( + "/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/client.crt", + "/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/client.key", + ) + if err != nil { + t.Fatal(err.Error()) + } + + ca, err := os.ReadFile("/Users/loveuer/codes/project/bifrost-pro/search_v3/internal/database/mq/tls/ca.crt") + if err != nil { + t.Fatal(err.Error()) + } + + caCertPool := x509.NewCertPool() + if !caCertPool.AppendCertsFromPEM(ca) { + t.Fatal("ca pool append ca crt err") + } + + if err := Init( + WithURI("amqps://admin:password@mq.dev:5671/export"), + WithTLS(&tls.Config{ + Certificates: []tls.Certificate{clientCert}, + RootCAs: caCertPool, + InsecureSkipVerify: true, + }), + WithQueueDeclare("export", false, false, false, false, amqp.Table{"x-max-priority": 100}), + ); err != nil { + t.Fatal(err) + } + + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + defer cancel() + + count := 1 + + t.Log("[TEST] start publish msg...") + + for { + if err = Publish(ctx, "export", amqp.Publishing{ + ContentType: "text/plain", + Body: []byte(time.Now().Format(time.RFC3339) + " => hello_world@" + strconv.Itoa(count)), + }); err != nil { + t.Log(err.Error()) + } + + time.Sleep(11 * time.Second) + count++ + } +} diff --git a/internal/database/mq/consume.go b/internal/database/mq/consume.go new file mode 100644 index 0000000..64a39f8 --- /dev/null +++ b/internal/database/mq/consume.go @@ -0,0 +1,97 @@ +package mq + +import ( + "context" + "fmt" + "github.com/loveuer/esgo2dump/log" + amqp "github.com/rabbitmq/amqp091-go" + "os" + "time" + "ultone/internal/tool" +) + +// ConsumeOpt +// - Name: consumer's name, default unamed_ +// - MaxReconnection: when mq connection closed, max reconnection times, default 3, -1 for unlimited +type ConsumeOpt struct { + Name string // consumer's name, default unamed_ + AutoAck bool + Exclusive bool + NoLocal bool + NoWait bool + MaxReconnection int // when mq connection closed, max reconnection times, default 3, -1 for unlimited + Args amqp.Table +} + +func Consume(ctx context.Context, queue string, opts ...*ConsumeOpt) (<-chan amqp.Delivery, error) { + var ( + err error + res = make(chan amqp.Delivery, 1) + opt = &ConsumeOpt{ + Name: os.Getenv("HOSTNAME"), + AutoAck: false, + Exclusive: false, + NoLocal: false, + NoWait: false, + Args: nil, + MaxReconnection: 3, + } + ) + + if len(opts) > 0 && opts[0] != nil { + opt = opts[0] + } + + if opt.Name == "" { + opt.Name = fmt.Sprintf("unamed_%d", time.Now().UnixMilli()) + } + + client.Lock() + if client.consume, err = client.ch.Consume(queue, opt.Name, opt.AutoAck, opt.Exclusive, opt.NoLocal, opt.NoWait, opt.Args); err != nil { + client.Unlock() + return nil, err + } + client.Unlock() + + go func() { + Run: + retry := 0 + for { + select { + case <-ctx.Done(): + close(res) + return + case m, ok := <-client.consume: + if !ok { + log.Warn("[mq] consume channel closed!!!") + goto Reconnect + } + + res <- m + } + } + + Reconnect: + if opt.MaxReconnection == -1 || opt.MaxReconnection > retry { + retry++ + + log.Warn("[mq] try reconnect[%d/%d] to mq server after %d seconds...err: %v", retry, opt.MaxReconnection, tool.Min(60, retry*5), err) + time.Sleep(time.Duration(tool.Min(60, retry*5)) * time.Second) + if err = client.open(); err != nil { + goto Reconnect + } + + client.Lock() + if client.consume, err = client.ch.Consume(queue, opt.Name, opt.AutoAck, opt.Exclusive, opt.NoLocal, opt.NoWait, opt.Args); err != nil { + client.Unlock() + goto Reconnect + } + client.Unlock() + + log.Info("[mq] reconnect success!!!") + goto Run + } + }() + + return res, nil +} diff --git a/internal/database/mq/opt.go b/internal/database/mq/opt.go new file mode 100644 index 0000000..0576267 --- /dev/null +++ b/internal/database/mq/opt.go @@ -0,0 +1,48 @@ +package mq + +import ( + "crypto/tls" + amqp "github.com/rabbitmq/amqp091-go" +) + +type OptionFn func(*_client) + +// WithURI +// - amqp uri, e.g. amqp://guest:guest@127.0.0.1:5672/vhost +// - tips: with tls, scheme should be amqps, amqps://xx:xx@127.0.0.1:5672/vhost +func WithURI(uri string) OptionFn { + return func(c *_client) { + c.uri = uri + } +} + +// WithTLS +// - amqps tls config +// - include client cert, client key, ca cert +func WithTLS(tlsCfg *tls.Config) OptionFn { + return func(c *_client) { + c.tlsCfg = tlsCfg + } +} + +type queueOption struct { + name string + durable bool + autoDelete bool + exclusive bool + noWait bool + args amqp.Table +} + +func WithQueueDeclare(name string, durable, autoDelete, exclusive, noWait bool, args amqp.Table) OptionFn { + return func(c *_client) { + c.queue = &queueOption{ + name: name, + durable: durable, + autoDelete: autoDelete, + exclusive: exclusive, + noWait: noWait, + args: args, + } + } +} diff --git a/internal/database/mq/publish.go b/internal/database/mq/publish.go new file mode 100644 index 0000000..a32bf55 --- /dev/null +++ b/internal/database/mq/publish.go @@ -0,0 +1,62 @@ +package mq + +import ( + "context" + "errors" + "github.com/loveuer/esgo2dump/log" + amqp "github.com/rabbitmq/amqp091-go" + "time" + "ultone/internal/tool" +) + +// PublishOpt +// - MaxReconnect: publish msg auto retry with reconnect, should not be big, case memory leak +type PublishOpt struct { + Exchange string + Mandatory bool + Immediate bool + MaxReconnect uint8 // publish msg auto retry with reconnect, should not be big(default 1), case memory leak +} + +func Publish(ctx context.Context, queue string, msg amqp.Publishing, opts ...*PublishOpt) error { + var ( + err error + opt = &PublishOpt{ + Exchange: amqp.DefaultExchange, + Mandatory: false, + Immediate: false, + MaxReconnect: 1, + } + retry = 0 + ) + + if len(opts) > 0 && opts[0] != nil { + opt = opts[0] + } + + for ; retry <= int(opt.MaxReconnect); retry++ { + if err = client.ch.PublishWithContext(ctx, opt.Exchange, queue, opt.Mandatory, opt.Immediate, msg); err == nil { + return nil + } + + if errors.Is(err, amqp.ErrClosed) { + sleep := tool.Min(120, (retry+1)*30) + + log.Warn("[mq] connection closed, reconnect[%d/%d] after %d seconds", retry+1, opt.MaxReconnect, sleep) + + time.Sleep(time.Duration(sleep) * time.Second) + + if oerr := client.open(); oerr != nil { + log.Error("[mq] reconnect[%d/%d] mq err: %v", oerr, retry+1, opt.MaxReconnect) + } else { + log.Info("[mq] reconnect mq success!!!") + } + + continue + } + + return err + } + + return err +} diff --git a/internal/database/nebula/client.go b/internal/database/nebula/client.go new file mode 100644 index 0000000..a54527f --- /dev/null +++ b/internal/database/nebula/client.go @@ -0,0 +1,34 @@ +package nebula + +import ( + "context" + "github.com/loveuer/ngorm/v2" + "strings" + "ultone/internal/opt" +) + +var ( + client *ngorm.Client +) + +func Init(ctx context.Context, cfg opt.Nebula) error { + var ( + err error + ) + + if client, err = ngorm.NewClient(ctx, &ngorm.Config{ + Endpoints: strings.Split(cfg.Uri, ","), + Username: cfg.Username, + Password: cfg.Password, + DefaultSpace: cfg.Space, + Logger: nil, + }); err != nil { + return err + } + + return nil +} + +func New(ctx context.Context, cfgs ...*ngorm.SessCfg) *ngorm.Session { + return client.Session(cfgs...) +} diff --git a/internal/handler/log.go b/internal/handler/log.go new file mode 100644 index 0000000..1a71ff6 --- /dev/null +++ b/internal/handler/log.go @@ -0,0 +1,102 @@ +package handler + +import ( + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "ultone/internal/database/db" + "ultone/internal/log" + "ultone/internal/model" + "ultone/internal/opt" + "ultone/internal/sqlType" + "ultone/internal/tool" +) + +func LogCategories() nf.HandlerFunc { + return func(c *nf.Ctx) error { + return resp.Resp200(c, model.OpLogType(0).All()) + } +} + +func LogList(c *nf.Ctx) error { + type Req struct { + Page int `query:"page"` + Size int `query:"size"` + UserIds []uint64 `query:"user_ids"` + Types sqlType.NumSlice[model.OpLogType] `query:"types"` + } + + var ( + ok bool + op *model.User + err error + req = new(Req) + list = make([]*model.OpLog, 0) + total int + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.QueryParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Size <= 0 { + req.Size = opt.DefaultSize + } + + if req.Size > opt.MaxSize { + return resp.Resp400(c, req, "参数过大") + } + + txCount := op.Role.Where(db.New(tool.Timeout(3)). + Model(&model.OpLog{}). + Select("COUNT(`op_logs`.`id`)"). + Joins("LEFT JOIN users ON `users`.`id` = `op_logs`.`user_id`")) + txGet := op.Role.Where(db.New(tool.Timeout(10)). + Model(&model.OpLog{}). + Joins("LEFT JOIN users ON `users`.`id` = `op_logs`.`user_id`")) + + if len(req.UserIds) != 0 { + txCount = txCount.Where("op_logs.user_id IN ?", req.UserIds) + txGet = txGet.Where("op_logs.user_id IN ?", req.UserIds) + } + + if len(req.Types) != 0 { + txCount = txCount.Where("op_logs.type IN ?", req.Types) + txGet = txGet.Where("op_logs.type IN ?", req.Types) + } + + if err = txCount. + Find(&total). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = txGet. + Offset(req.Page * req.Size). + Limit(req.Size). + Order("`op_logs`.`created_at` DESC"). + Find(&list). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + for _, logItem := range list { + m := make(map[string]any) + if err = logItem.Content.Bind(&m); err != nil { + log.Warn(c, "handler.LogList: log=%d content=%v bind map[string]any err=%v", logItem.Id, logItem.Content, err) + continue + } + + if logItem.HTML, err = logItem.Type.Render(m); err != nil { + log.Warn(c, "handler.LogList: log=%d template=%s render map=%+v err=%v", logItem.Id, logItem.Type.Template(), m, err) + continue + } + + log.Debug(c, "handler.LogList: log=%d render map=%+v string=%s", logItem.Id, m, logItem.HTML) + } + + return resp.Resp200(c, nf.Map{"list": list, "total": total}) +} diff --git a/internal/handler/user.go b/internal/handler/user.go new file mode 100644 index 0000000..bbe42db --- /dev/null +++ b/internal/handler/user.go @@ -0,0 +1,486 @@ +package handler + +import ( + "errors" + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/samber/lo" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "time" + "ultone/internal/controller" + "ultone/internal/database/cache" + "ultone/internal/database/db" + "ultone/internal/middleware/oplog" + "ultone/internal/model" + "ultone/internal/opt" + "ultone/internal/sqlType" + "ultone/internal/tool" +) + +func AuthLogin(c *nf.Ctx) error { + type Req struct { + Username string `json:"username"` + Password string `json:"password"` + } + + var ( + err error + req = new(Req) + target = new(model.User) + token string + now = time.Now() + ) + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if err = db.New(tool.Timeout(3)). + Model(&model.User{}). + Where("username = ?", req.Username). + Where("deleted_at = 0"). + Take(target). + Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return resp.Resp400(c, err.Error(), "用户名或密码错误") + } + + return resp.Resp500(c, err.Error()) + } + + if !tool.ComparePassword(req.Password, target.Password) { + return resp.Resp400(c, nil, "用户名或密码错误") + } + + if err = target.IsValid(true); err != nil { + return resp.Resp401(c, nil, err.Error()) + } + + if err = controller.UserController.CacheUser(c, target); err != nil { + return resp.RespError(c, err) + } + + if token, err = target.JwtEncode(); err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = controller.UserController.CacheToken(c, token, target); err != nil { + return resp.RespError(c, err) + } + + if !opt.MultiLogin { + var ( + last = fmt.Sprintf("%s:user:last_token:%d", opt.CachePrefix, target.Id) + bs []byte + ) + + if bs, err = cache.Client.Get(tool.Timeout(3), last); err == nil { + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, string(bs)) + _ = cache.Client.Del(tool.Timeout(3), key) + } + + if err = cache.Client.Set(tool.Timeout(3), last, token); err != nil { + return resp.Resp500(c, err.Error()) + } + } + + c.Set("Set-Cookie", fmt.Sprintf("%s=%s; Path=/", opt.CookieName, token)) + c.Locals("user", target) + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeLogin, Content: map[string]any{ + "time": now.UnixMilli(), + "ip": c.IP(true), + }}) + + return resp.Resp200(c, nf.Map{"token": token, "user": target}) +} + +func AuthVerify(c *nf.Ctx) error { + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + token, ok := c.Locals("token").(string) + if !ok { + return resp.Resp401(c, nil) + } + + return resp.Resp200(c, nf.Map{"token": token, "user": op}) +} + +func AuthLogout(c *nf.Ctx) error { + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + _ = controller.UserController.RmUserCache(c, op.Id) + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{ + Type: model.OpLogTypeLogout, + Content: map[string]any{ + "time": time.Now().UnixMilli(), + "ip": c.IP(), + }, + }) + + return resp.Resp200(c, nil) +} + +func ManageUserList(c *nf.Ctx) error { + type Req struct { + Page int `query:"page"` + Size int `query:"size"` + Keyword string `query:"keyword"` + } + + var ( + err error + ok bool + op *model.User + req = new(Req) + list = make([]*model.User, 0) + total = 0 + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.QueryParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Size == 0 { + req.Size = opt.DefaultSize + } + + if req.Size > opt.MaxSize { + return resp.Resp400(c, nf.Map{"msg": "size over max", "max": opt.MaxSize}) + } + + if err = op.Role.Where(db.New(tool.Timeout(10)). + Model(&model.User{}). + Where("deleted_at = 0")). + Order("updated_at DESC"). + Offset(req.Page * req.Size). + Limit(req.Size). + Find(&list). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = op.Role.Where(db.New(tool.Timeout(5)). + Model(&model.User{}). + Select("COUNT(id)"). + Where("deleted_at = 0")). + Find(&total). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + return resp.Resp200(c, nf.Map{"list": list, "total": total}) +} + +func ManageUserCreate(c *nf.Ctx) error { + type Req struct { + Username string `json:"username"` + Nickname string `json:"nickname"` + Password string `json:"password"` + Status model.Status `json:"status"` + Role model.Role `json:"role"` + Privileges sqlType.NumSlice[model.Privilege] `json:"privileges"` + Comment string `json:"comment"` + ActiveAt int64 `json:"active_at"` + Deadline int64 `json:"deadline"` + } + + var ( + err error + ok bool + op *model.User + req = new(Req) + now = time.Now() + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Username == "" || req.Password == "" { + return resp.Resp400(c, req) + } + + if err = tool.CheckPassword(req.Password); err != nil { + return resp.Resp400(c, req, err.Error()) + } + + if req.Nickname == "" { + req.Nickname = req.Username + } + + if req.Status.Code() == "unknown" { + return resp.Resp400(c, req, "用户状态不正常") + } + + if req.Role == 0 { + req.Role = model.RoleUser + } + + if req.ActiveAt == 0 { + req.ActiveAt = now.UnixMilli() + } + + if req.Deadline == 0 { + req.Deadline = now.AddDate(99, 0, 0).UnixMilli() + } + + newUser := &model.User{ + CreatedAt: now.UnixMilli(), + UpdatedAt: now.UnixMilli(), + Username: req.Username, + Password: tool.NewPassword(req.Password), + Status: req.Status, + Nickname: req.Nickname, + Comment: req.Comment, + Role: req.Role, + Privileges: req.Privileges, + CreatedById: op.Id, + CreatedByName: op.CreatedByName, + ActiveAt: op.ActiveAt, + Deadline: op.Deadline, + } + + if err = newUser.IsValid(false); err != nil { + return resp.Resp400(c, newUser, err.Error()) + } + + if !newUser.Role.CanOP(op) { + return resp.Resp403(c, newUser, "角色不符合") + } + + if err = db.New(tool.Timeout(5)). + Create(newUser). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeCreateUser, Content: map[string]any{ + "target_id": newUser.Id, + "target_username": newUser.Username, + "target_nickname": newUser.Nickname, + "target_status": newUser.Status.Label(), + "target_role": newUser.Role.Label(), + "target_privileges": lo.Map(newUser.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + "target_active_at": op.ActiveAt, + "target_deadline": op.Deadline, + }}) + + return resp.Resp200(c, newUser) +} + +func ManageUserUpdate(c *nf.Ctx) error { + type Req struct { + Id uint64 `json:"id"` + Nickname string `json:"nickname"` + Password string `json:"password"` + Status model.Status `json:"status"` + Comment string `json:"comment"` + Role model.Role `json:"role"` + Privileges sqlType.NumSlice[model.Privilege] `json:"privileges"` + ActiveAt int64 `json:"active_at"` + Deadline int64 `json:"deadline"` + } + + type Change struct { + Old any `json:"old"` + New any `json:"new"` + } + + var ( + ok bool + op *model.User + target *model.User + err error + req = new(Req) + rm = make(map[string]any) + updates = make(map[string]any) + changes = make(map[string]Change) + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if err = c.BodyParser(&rm); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Id == 0 { + return resp.Resp400(c, "未指定目标用户") + } + + if target, err = controller.UserController.GetUser(c, req.Id); err != nil { + return resp.RespError(c, err) + } + + if op.Role < target.Role || ((op.Role == target.Role) && opt.RoleMustLess) { + return resp.Resp403(c, req) + } + + if op.Id == req.Id { + return resp.Resp403(c, req, "无法更新自己") + } + + if _, ok = rm["nickname"]; ok { + if req.Nickname == "" { + return resp.Resp400(c, req) + } + + updates["nickname"] = req.Nickname + changes["昵称"] = Change{Old: target.Nickname, New: req.Nickname} + } + + if _, ok = rm["password"]; ok { + if err = tool.CheckPassword(req.Password); err != nil { + return resp.Resp400(c, err.Error()) + } + + updates["password"] = tool.NewPassword(req.Password) + changes["密码"] = Change{Old: "******", New: "******"} + } + + if _, ok = rm["status"]; ok { + if req.Status.Code() == "unknown" { + return resp.Resp400(c, req, "用户状态不符合") + } + + updates["status"] = req.Status + changes["状态"] = Change{Old: target.Status.Label(), New: req.Status.Label()} + } + + if _, ok = rm["comment"]; ok { + updates["comment"] = req.Comment + changes["备注"] = Change{Old: target.Comment, New: req.Comment} + } + + if _, ok = rm["role"]; ok { + if op.Role < req.Role || ((op.Role == req.Role) && opt.RoleMustLess) { + return resp.Resp400(c, req, "用户角色不符合") + } + + updates["role"] = req.Role + changes["角色"] = Change{Old: target.Role.Label(), New: req.Role.Label()} + } + + if _, ok = rm["privileges"]; ok { + for _, val := range req.Privileges { + if lo.IndexOf(op.Privileges, val) < 0 { + return resp.Resp400(c, req, fmt.Sprintf("权限: %s 不符合", val.Label())) + } + } + + changes["权限"] = Change{ + Old: lo.Map(target.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + New: lo.Map(req.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + } + updates["privileges"] = req.Privileges + } + + if _, ok = rm["active_at"]; ok { + updates["active_at"] = time.UnixMilli(req.ActiveAt).UnixMilli() + changes["激活时间"] = Change{Old: target.ActiveAt, New: req.ActiveAt} + } + + if _, ok = rm["deadline"]; ok { + updates["deadline"] = time.UnixMilli(req.Deadline).UnixMilli() + changes["到期时间"] = Change{Old: target.Deadline, New: req.Deadline} + } + + updated := new(model.User) + if err = db.New(tool.Timeout(5)). + Model(updated). + Clauses(clause.Returning{}). + Where("id = ?", req.Id). + Updates(updates). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = controller.UserController.RmUserCache(c, req.Id); err != nil { + return resp.RespError(c, err) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeUpdateUser, Content: map[string]any{ + "target_id": target.Id, + "target_username": target.Username, + "changes": changes, + }}) + + return resp.Resp200(c, updated) +} + +func ManageUserDelete(c *nf.Ctx) error { + type Req struct { + Id uint64 `json:"id"` + } + + var ( + ok bool + op *model.User + target *model.User + err error + req = new(Req) + ) + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Id == 0 { + return resp.Resp400(c, req) + } + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if req.Id == op.Id { + return resp.Resp400(c, nil, "无法删除自己") + } + + if target, err = controller.UserController.GetUser(c, req.Id); err != nil { + return resp.RespError(c, err) + } + + if op.Role < target.Role || (op.Role == target.Role && opt.RoleMustLess) { + return resp.Resp403(c, nil) + } + + if err = controller.UserController.DeleteUser(c, target.Id); err != nil { + return resp.RespError(c, err) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeDeleteUser, Content: map[string]any{ + "target_id": target.Id, + "target_username": target.Username, + }}) + + return resp.Resp200(c, nil, "删除成功") +} diff --git a/internal/interfaces/database.go b/internal/interfaces/database.go new file mode 100644 index 0000000..8c75e07 --- /dev/null +++ b/internal/interfaces/database.go @@ -0,0 +1,16 @@ +package interfaces + +import ( + "context" + "time" +) + +type Cacher interface { + Get(ctx context.Context, key string) ([]byte, error) + GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) + // Set value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal + Set(ctx context.Context, key string, value any) error + // SetEx value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal + SetEx(ctx context.Context, key string, value any, duration time.Duration) error + Del(ctx context.Context, keys ...string) error +} diff --git a/internal/interfaces/enum.go b/internal/interfaces/enum.go new file mode 100644 index 0000000..fd43fa6 --- /dev/null +++ b/internal/interfaces/enum.go @@ -0,0 +1,11 @@ +package interfaces + +type Enum interface { + Value() int64 + Code() string + Label() string + + MarshalJSON() ([]byte, error) + + All() []Enum +} diff --git a/internal/interfaces/logger.go b/internal/interfaces/logger.go new file mode 100644 index 0000000..8e75d58 --- /dev/null +++ b/internal/interfaces/logger.go @@ -0,0 +1,7 @@ +package interfaces + +type OpLogger interface { + Enum + Render(content map[string]any) (string, error) + Template() string +} diff --git a/internal/invoke/client.go b/internal/invoke/client.go new file mode 100644 index 0000000..ae21cc7 --- /dev/null +++ b/internal/invoke/client.go @@ -0,0 +1,91 @@ +package invoke + +import ( + "fmt" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/resolver" + "sync" + "time" + "ultone/internal/tool" +) + +const ( + SCHEME = "sonar" +) + +type Client[T any] struct { + domain string + endpoints []string + fn func(grpc.ClientConnInterface) T + opts []grpc.DialOption + + cc *grpc.ClientConn +} + +func (c *Client[T]) Session() T { + return c.fn(c.cc) +} + +var ( + clients = &sync.Map{} +) + +// NewClient +/* + * domain => Example: sonar_search + * endpoints => Example: []string{"sonar_search:8080", "sonar_search:80801"} or []string{"10.10.10.10:32000", "10.10.10.10:32001"} + * fn => Example: system.NewSystemSrvClient + * opts => Example: grpc.WithTransportCredentials(insecure.NewCredentials()), + */ +func NewClient[T any]( + domain string, + endpoints []string, + fn func(grpc.ClientConnInterface) T, + opts ...grpc.DialOption, +) (*Client[T], error) { + + cached, ok := clients.Load(domain) + if ok { + if client, ok := cached.(*Client[T]); ok { + return client, nil + } + } + + resolved := resolver.State{Addresses: make([]resolver.Address, 0)} + + locker.Lock() + for _, item := range endpoints { + resolved.Addresses = append(resolved.Addresses, resolver.Address{Addr: item}) + } + ips[domain] = resolved + locker.Unlock() + + fullAddress := fmt.Sprintf("%s://%s", SCHEME, domain) + + opts = append(opts, + grpc.WithResolvers(myBuilder), + grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy":"round_robin"}`), + grpc.WithChainUnaryInterceptor(retryInterceptor(3, 3*time.Second)), + grpc.WithTransportCredentials(insecure.NewCredentials()), + ) + + conn, err := grpc.DialContext( + tool.Timeout(3), + fullAddress, + opts..., + ) + + if err != nil { + return nil, err + } + + c := &Client[T]{ + cc: conn, + fn: fn, + } + + clients.Store(domain, c) + + return c, nil +} diff --git a/internal/invoke/resolve.go b/internal/invoke/resolve.go new file mode 100644 index 0000000..96232ec --- /dev/null +++ b/internal/invoke/resolve.go @@ -0,0 +1,82 @@ +package invoke + +import ( + "fmt" + "google.golang.org/grpc/resolver" + "strings" + "sync" +) + +const ( + scheme = "bifrost" +) + +type CustomBuilder struct{} + +func (cb *CustomBuilder) Scheme() string { + return scheme +} + +func (cb *CustomBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) { + cr := &customResolver{ + cc: cc, + target: target, + } + + cr.ResolveNow(resolver.ResolveNowOptions{}) + + return cr, nil +} + +type customResolver struct { + sync.Mutex + target resolver.Target + cc resolver.ClientConn + ips map[string]string +} + +func (cr *customResolver) ResolveNow(o resolver.ResolveNowOptions) { + var ( + addrs = make([]resolver.Address, 0) + hp []string + ) + + cr.Lock() + defer cr.Unlock() + + if hp = strings.Split(cr.target.URL.Host, ":"); len(hp) >= 2 { + if ip, ok := pool[hp[0]]; ok { + addr := fmt.Sprintf("%s:%s", ip, hp[1]) + addrs = append(addrs, resolver.Address{Addr: addr}) + } + } + + _ = cr.cc.UpdateState(resolver.State{Addresses: addrs}) +} + +func (cr *customResolver) Close() {} + +var ( + cb = &CustomBuilder{} + pool = make(map[string]string) +) + +func init() { + resolver.Register(cb) +} + +type CustomDomain struct { + Domain string + IP string +} + +func NewCustomBuilder(cds ...CustomDomain) resolver.Builder { + locker.Lock() + defer locker.Unlock() + + for _, cd := range cds { + pool[cd.Domain] = cd.IP + } + + return cb +} diff --git a/internal/invoke/resolve_v2.go b/internal/invoke/resolve_v2.go new file mode 100644 index 0000000..a06bf54 --- /dev/null +++ b/internal/invoke/resolve_v2.go @@ -0,0 +1,43 @@ +package invoke + +import ( + "github.com/sirupsen/logrus" + "sync" + + "google.golang.org/grpc/resolver" +) + +type Builder struct{} + +func (b *Builder) Scheme() string { + return SCHEME +} + +func (b *Builder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) { + cr := &Resolver{ + cc: cc, + target: target, + } + + cr.ResolveNow(resolver.ResolveNowOptions{}) + + return cr, nil +} + +type Resolver struct { + target resolver.Target + cc resolver.ClientConn +} + +func (r *Resolver) ResolveNow(o resolver.ResolveNowOptions) { + logrus.Tracef("resolve_v2 ResolveNow => target: %s, %v", r.target.URL.Host, ips) + _ = r.cc.UpdateState(ips[r.target.URL.Host]) +} + +func (cr *Resolver) Close() {} + +var ( + locker = &sync.Mutex{} + myBuilder = &Builder{} + ips = map[string]resolver.State{} +) diff --git a/internal/invoke/retry.go b/internal/invoke/retry.go new file mode 100644 index 0000000..41a0b80 --- /dev/null +++ b/internal/invoke/retry.go @@ -0,0 +1,43 @@ +package invoke + +import ( + "context" + "fmt" + "time" + + "github.com/sirupsen/logrus" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func retryInterceptor(maxAttempt int, interval time.Duration) grpc.UnaryClientInterceptor { + return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { + + if maxAttempt == 0 { + return invoker(ctx, method, req, reply, cc, opts...) + } + + duration := interval + + for attempt := 1; attempt <= maxAttempt; attempt++ { + + if err := invoker(ctx, method, req, reply, cc, opts...); err != nil { + if s, ok := status.FromError(err); ok && s.Code() == codes.Unavailable { + logrus.Debugf("Connection failed err: %v, retry %d after %fs", err, attempt, duration.Seconds()) + + time.Sleep(duration) + duration *= 2 + + continue + } + + return err + } + + return nil // 请求成功,不需要重试 + } + + return fmt.Errorf("max retry attempts reached") + } +} diff --git a/internal/log/log.go b/internal/log/log.go new file mode 100644 index 0000000..0720f52 --- /dev/null +++ b/internal/log/log.go @@ -0,0 +1,40 @@ +package log + +import ( + "fmt" + "github.com/loveuer/nf" + ulog "github.com/loveuer/nf/nft/log" + "ultone/internal/opt" +) + +func _mix(c *nf.Ctx, msg string) string { + if c == nil { + return msg + } + + return fmt.Sprintf("%v | %s", c.Locals(opt.LocalShortTraceKey), msg) +} + +func Debug(c *nf.Ctx, msg string, data ...any) { + ulog.Debug(_mix(c, msg), data...) +} + +func Info(c *nf.Ctx, msg string, data ...any) { + ulog.Info(_mix(c, msg), data...) +} + +func Warn(c *nf.Ctx, msg string, data ...any) { + ulog.Warn(_mix(c, msg), data...) +} + +func Error(c *nf.Ctx, msg string, data ...any) { + ulog.Error(_mix(c, msg), data...) +} + +func Panic(c *nf.Ctx, msg string, data ...any) { + ulog.Panic(_mix(c, msg), data...) +} + +func Fatal(c *nf.Ctx, msg string, data ...any) { + ulog.Fatal(_mix(c, msg), data...) +} diff --git a/internal/middleware/auth/auth.go b/internal/middleware/auth/auth.go new file mode 100644 index 0000000..fb9be82 --- /dev/null +++ b/internal/middleware/auth/auth.go @@ -0,0 +1,55 @@ +package auth + +import ( + "errors" + "gitea.com/taozitaozi/gredis" + "github.com/go-redis/redis/v8" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "strings" + "ultone/internal/controller" + "ultone/internal/log" + "ultone/internal/opt" +) + +var ( + tokenFunc = func(c *nf.Ctx) string { + token := c.Get("Authorization") + if token == "" { + token = c.Cookies(opt.CookieName) + } + + return token + } +) + +func NewAuth() nf.HandlerFunc { + return func(c *nf.Ctx) error { + token := tokenFunc(c) + + if token = strings.TrimPrefix(token, "Bearer "); token == "" { + return resp.Resp401(c, token) + } + + log.Debug(c, "middleware.NewAuth: token=%s", token) + + target, err := controller.UserController.GetUserByToken(c, token) + if err != nil { + log.Error(c, "middleware.NewAuth: get user by token=%s err=%v", token, err) + if errors.Is(err, redis.Nil) || errors.Is(err, gredis.ErrKeyNotFound) { + return resp.Resp401(c, err) + } + + return resp.RespError(c, err) + } + + if err = target.IsValid(true); err != nil { + return resp.Resp401(c, err.Error(), err.Error()) + } + + c.Locals("user", target) + c.Locals("token", token) + + return c.Next() + } +} diff --git a/internal/middleware/front/dist/front/3rdpartylicenses.txt b/internal/middleware/front/dist/front/3rdpartylicenses.txt new file mode 100644 index 0000000..83f417b --- /dev/null +++ b/internal/middleware/front/dist/front/3rdpartylicenses.txt @@ -0,0 +1,370 @@ + +-------------------------------------------------------------------------------- +Package: @angular/core +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: rxjs +License: "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 + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (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. + + +-------------------------------------------------------------------------------- +Package: tslib +License: "0BSD" + +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/common +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/platform-browser +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/router +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/cdk +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +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. + +-------------------------------------------------------------------------------- +Package: @angular/material +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +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. + +-------------------------------------------------------------------------------- +Package: @angular/animations +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/forms +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: js-base64 +License: "BSD-3-Clause" + +Copyright (c) 2014, Dan Kogai +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 {{{project}}} 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. + +-------------------------------------------------------------------------------- +Package: @angular/service-worker +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: zone.js +License: "MIT" + +The MIT License + +Copyright (c) 2010-2023 Google LLC. https://angular.io/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: + +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/internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9a2ccdb34a97a06510d04238d8bedd8e063d3a GIT binary patch literal 2875 zcmV-B3&iw^P)C0008_P)t-s0002& z9EbENqopD5@(y0~Ac4&(;F%uw?h$_L3~Rb4@Sh>}?lk4{A#>dpkIgIViW&F%F}(B? zSI#Ko-665>9e3aedGj;V?;nisG~&uE@!BTIsUYpu3W?t$vbrbqDfEpQ^!YHm_Aa;gF0b?~uc09I z!6@*Z9PFwe>h&?n^Do8tFSGY8s`V$5^d*JzB6;ctX7dkLr6Tu{8S%y`?!PDQwIuHI zG}-qu&Gjz3^)0gF9GvO`U-Af9wkP=YGu8Mox6~cC-WHeT8kFq^VeSQ7pd$H{9rwE@ z^R6WGnH}=FCGPPu)!7}c<`|6C27>GXTJ{A?_X0(q9`Ugw@3JB4_A}9$9`~Ie_028v zsUh&KA?~Ce?YSiC@-WNzGRX5SyWSqE_XkL&Ao78}srm!1FA&+8?yi8L-$IsNNZ!*cF`K19I{qap3}Nq#fz+G~(JL z!P+6a-yEdb8KUVJhTtKu(-ot_2%X3WmCFZ_&e$%S$i%~zlzw4hAp7y}?dj;} z;oslf&(FWMvapSBK>PRh^78TU@9*#G&&RT;Pv0?%000M;NklCo2*8x$)93d|qJeXTx^d$M0)Q>! z`}gm+Z3_jCwE9nlIR1gl2~@VekbuzjA)EV~9n0jEwSjjVL?>tH5fm?t5C(&5zrOR?_VJ?7V~TQ{0Iz+3_W zb_+sEP%7frfcpA;EQkuAUq316*s)`^YQym#2}CZyR8GO9!ILIUA^=7JIlrD70Fwf0 zI3@wHK(Qo~L@TuU_3In+)c|w*X&D4+_ij**=C4>G0QIrhM;cvggf(4br>37G5&sHX~uF=B)S^zYw)8g-UR2^NZj^ARvv z%wJ{zx^xMs@(~z8;douJckf;Vqz4P7+qLT(Ks^HZ1%)I)ClCOO1(wQ&g2|I7Z^Zcm z&{fXw0xAs{Fkr+0A($=+5)hxc+sq3-@~&OG1YqMbtbNz6UF(hSq70y>%le-aA%M9! zQY7XF4M2jf*m!lo$dM#45JZT|T>SAP_et{D0L`}mz{oHV(+O^70UtjyEATZp(A5Ae zRt8Yjg@6?70usOYn3!F`rcF41#|{Iqc(EEFcJta;a4guI{8PG^%5`38JD&M>J_WXGQa36$d8eqeqty>YWMGX+X zabqG#M8#V~QmMsB5C3j=YM5Jae^AUhm0)Rya=Bqq( z=ye^iWy=;{P)Y)%qH!Z&dbw}kzI&^50Wb}{?g;?3M#&_BTR@DLLa=WY5`-WIw*n17 z^OvXt%z!ECOHF_wASy5kz>p0amM^ye=wvo3Eqe#B+qX>tFa^GTeTV>{V2MQl6`uQK z&X_Ud_H7}!h=2@oB!0cR`&G6C0W(GhGucKPz@0ASHaeBz7@dLt5*YotwpvBaDlD)wF(FWHW$|-ASBpa5Nm*7V0)!40K(7$ zY+pfKP|g2UaG<^cL0te26cD_5`{P3T`=&s8VMS3y@#4kv0jJ8+(&(gUAvSjG*ki|@ zKY#Y@-Mgb}o;-g2=;5of;7~4ezDY0z2tWY>9=O1nvW(MfIjiL?>}!F!g7V-*kUb&%yArH#n*h9d^XAQ)H*f!U ZUjT_fSx^~10a*Y5002ovPDHLkV1ljCVV(d0 literal 0 HcmV?d00001 diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..11702cd7bd67cee3c26172d0b69968b568c210e0 GIT binary patch literal 3077 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 literal 0 HcmV?d00001 diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..613ac793e063b1da8d0dc36dcbd1cc0ae620291d GIT binary patch literal 11028 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 literal 0 HcmV?d00001 diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..033724e15f5485c4d86af398a68ca293e6116f72 GIT binary patch literal 1995 zcmV;+2Q>JJP)291V+*= z^06lJ@iNwq8T9WTgUAk`+9JF2BZb^3%m;Ym7q0XGMcgOF zo*(n@GuZeu%=Iw5@*;!h3u5#YR+k?7ogMGqEYs})RJtkn_%qPMDD2W6x#A(I$Sm}o zA^G<$pUy4t>@(lADEhM@>G?Ft@+z(JAaC^$NSYe!pBv}r0bck9LaiqJxheViGtbl@ zy}}5d^Cy_k1%~qyQ1%W*(l7GuH0Hbrq4E(+ix>0pA#9i%>7pLz?J&~A37p9UhRiMW z^fTl6FSzm!Tkir^@&Zxx15Nb|N%sguuqOGsDE7%K^7t~w^AA?`3QY9^NuwkBv?uuV zG0F8Uv-A#5_yj_%CHkKs`M)Xk%`NiuGuQbt!SpV^`7ylqF1h$Fukg`I;a1 zlpOZND)p%%^`9X1u_g4sDDk2n@w_GM^fJx(Gt1j0#_}w=_%FED8maawpV}9m^e340 zCzSOkk@O{s+XQy!2W;&KW9tH5?E+f#4^s6BQK%*Rr6TsMBlMRX^t&hWogMPTDe<@_ z@tGX(wIuJjBX;8kfijmgE?a^d*MW27~eIY}!0%!3FTBIQJjv4c+A@Ig2@4+YSr628< z8ttMT>hd((@i5NuF2&pw9<Kg+s;a1{rKNOoa8*@RRaI3rE*=;6@9*Q|U3Qy|k;Vs;a80s;a80s*R0^h=hc4RaI3vEiEf^xaC#=00bjRL_t(o!|l{%P*hPA z!0{_EF$B`*s`{HM-~hB}QNAp^;Xci8 z+_(->TwGk{EjUgHNt^X9W%!s*`}Xa-0n+tr*RIvcye~Gx*U4!SKvJnm2LorB8XFsf zw0G}bl!!>azD~P$3yz7&^y%VC{>rANC>hV43sPXE^FB3cVSfE={Y!i5WKlgv$63T@c1;pWYo2vrh?3j6svI9y!2)?^Jr=Nb`_4jedu z5>i1yK?TL3LVh+j7XjL}W(_#!h*%aDK$)2>!Gho*#z_LS3n428WNrbOL1@)uLHTSh zU%IplAuB7ZIpUDHxy3xlY(J#CXwrn}WOMoQrS|9mOdb4jgU+fdI~ADRDRugEnC}KM5j_8V%GckSliprk%>dg zp^ccLGc^wm);pZ1hc@gDD;JGV6^qPe+k5~@y3RjQDLgm`LH?dsLXd-ecC zSdiOcXcIN8o}yAEhKBZ~hFWMF3p#=wKHQ%gwn|A+B_@Wpq)!6K(UA!q6*@xA3c9-9 zzI{76IkXTp4hVSf=y+i}19|~{`BI;nrK?f0OHN9n#-jjoW2mMx#-y!%?b1ExN}#UtmI8FnW}c;jYoVI&>)9?$#}O6YKB1 zoduQMvL#aQpok22_vg<+diG53q;CG})|FvExg#SZi_&yNM8t2Y9JLw=P#zZK;o(6~ zjIdn4qIdr59vOh@lPp);0QB}P;m8m~xO$YAu_)4o4=TfiM({zynGoTO1vTV_8j=6n zL~Scqo;>;B#EGvjU#{5v?d~0Zr@_pbGZFIoEv>k}`OV!i+z>dJrI!~_AbGxnliu*3 zRPc<@SxZPOy*myky}nb36B;;Q=qzMuIqCGNtq(jwf|L4jLV(QDc6RdQNhm$^gpYSTjcV2; dIpy?!`T;k-MF8k)@eTk0002ovPDHLkV1mgk?e+iw literal 0 HcmV?d00001 diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..3090dc2d8f93429535c667e616e367c010d941ad GIT binary patch literal 2404 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 Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/internal/middleware/front/dist/front/browser/index.html b/internal/middleware/front/dist/front/browser/index.html new file mode 100644 index 0000000..b24fea6 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/index.html @@ -0,0 +1,18 @@ + + + + + Front + + + + + + + + + + + + + diff --git a/internal/middleware/front/dist/front/browser/main-CLMZMBYY.js b/internal/middleware/front/dist/front/browser/main-CLMZMBYY.js new file mode 100644 index 0000000..c9c2817 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/main-CLMZMBYY.js @@ -0,0 +1,12 @@ +var xI=Object.defineProperty,DI=Object.defineProperties;var CI=Object.getOwnPropertyDescriptors;var Gl=Object.getOwnPropertySymbols;var Tb=Object.prototype.hasOwnProperty,Ab=Object.prototype.propertyIsEnumerable;var Mb=(t,e,i)=>e in t?xI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,w=(t,e)=>{for(var i in e||={})Tb.call(e,i)&&Mb(t,i,e[i]);if(Gl)for(var i of Gl(e))Ab.call(e,i)&&Mb(t,i,e[i]);return t},Z=(t,e)=>DI(t,CI(e));var Xf=(t,e)=>{var i={};for(var n in t)Tb.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(t!=null&&Gl)for(var n of Gl(t))e.indexOf(n)<0&&Ab.call(t,n)&&(i[n]=t[n]);return i};var ql=(t,e,i)=>new Promise((n,r)=>{var o=l=>{try{a(i.next(l))}catch(c){r(c)}},s=l=>{try{a(i.throw(l))}catch(c){r(c)}},a=l=>l.done?n(l.value):Promise.resolve(l.value).then(o,s);a((i=i.apply(t,e)).next())});function EI(t,e){return Object.is(t,e)}var pt=null,Qs=!1,Yl=1,$i=Symbol("SIGNAL");function Ce(t){let e=pt;return pt=t,e}function II(){return Qs}var Zl={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Rb(t){if(Qs)throw new Error("");if(pt===null)return;pt.consumerOnSignalRead(t);let e=pt.nextProducerIndex++;if(Xl(pt),et.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function Ql(t){Xl(t);for(let e=0;e0}function Xl(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function Pb(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}function Lb(t){return t.producerNode!==void 0}function TI(){throw new Error}var jb=TI;function Vb(){jb()}function Bb(t){jb=t}var AI=null;function zb(t){let e=Object.create(Hb);e.value=t;let i=()=>(Rb(e),e.value);return i[$i]=e,i}function ih(t,e){kb()||Vb(),t.equal(t.value,e)||(t.value=e,RI(t))}function Ub(t,e){kb()||Vb(),ih(t,e(t.value))}var Hb=Z(w({},Zl),{equal:EI,value:void 0});function RI(t){t.version++,SI(),Ob(t),AI?.()}function $b(t,e,i){let n=Object.create(OI);i&&(n.consumerAllowSignalWrites=!0),n.fn=t,n.schedule=e;let r=l=>{n.cleanupFn=l};function o(l){return l.fn===null&&l.schedule===null}function s(l){o(l)||(nh(l),l.cleanupFn(),l.fn=null,l.schedule=null,l.cleanupFn=Jf)}let a=()=>{if(n.fn===null)return;if(II())throw new Error("Schedulers cannot synchronously execute watches while scheduling.");if(n.dirty=!1,n.hasRun&&!Ql(n))return;n.hasRun=!0;let l=eh(n);try{n.cleanupFn(),n.cleanupFn=Jf,n.fn(r)}finally{th(n,l)}};return n.ref={notify:()=>Nb(n),run:a,cleanup:()=>n.cleanupFn(),destroy:()=>s(n),[$i]:n},n.ref}var Jf=()=>{},OI=Z(w({},Zl),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!1,consumerMarkedDirty:t=>{t.schedule!==null&&t.schedule(t.ref)},hasRun:!1,cleanupFn:Jf});function H(t){return typeof t=="function"}function Do(t){let i=t(n=>{Error.call(n),n.stack=new Error().stack});return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}var Jl=Do(t=>function(i){t(this),this.message=i?`${i.length} errors occurred during unsubscription: +${i.map((n,r)=>`${r+1}) ${n.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=i});function Dr(t,e){if(t){let i=t.indexOf(e);0<=i&&t.splice(i,1)}}var ge=class t{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(let o of i)o.remove(this);else i.remove(this);let{initialTeardown:n}=this;if(H(n))try{n()}catch(o){e=o instanceof Jl?o.errors:[o]}let{_finalizers:r}=this;if(r){this._finalizers=null;for(let o of r)try{Wb(o)}catch(s){e=e??[],s instanceof Jl?e=[...e,...s.errors]:e.push(s)}}if(e)throw new Jl(e)}}add(e){var i;if(e&&e!==this)if(this.closed)Wb(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(i=this._finalizers)!==null&&i!==void 0?i:[]).push(e)}}_hasParent(e){let{_parentage:i}=this;return i===e||Array.isArray(i)&&i.includes(e)}_addParent(e){let{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(e),i):i?[i,e]:e}_removeParent(e){let{_parentage:i}=this;i===e?this._parentage=null:Array.isArray(i)&&Dr(i,e)}remove(e){let{_finalizers:i}=this;i&&Dr(i,e),e instanceof t&&e._removeParent(this)}};ge.EMPTY=(()=>{let t=new ge;return t.closed=!0,t})();var rh=ge.EMPTY;function ec(t){return t instanceof ge||t&&"closed"in t&&H(t.remove)&&H(t.add)&&H(t.unsubscribe)}function Wb(t){H(t)?t():t.unsubscribe()}var wn={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Co={setTimeout(t,e,...i){let{delegate:n}=Co;return n?.setTimeout?n.setTimeout(t,e,...i):setTimeout(t,e,...i)},clearTimeout(t){let{delegate:e}=Co;return(e?.clearTimeout||clearTimeout)(t)},delegate:void 0};function tc(t){Co.setTimeout(()=>{let{onUnhandledError:e}=wn;if(e)e(t);else throw t})}function fi(){}var Gb=oh("C",void 0,void 0);function qb(t){return oh("E",void 0,t)}function Yb(t){return oh("N",t,void 0)}function oh(t,e,i){return{kind:t,value:e,error:i}}var Cr=null;function Eo(t){if(wn.useDeprecatedSynchronousErrorHandling){let e=!Cr;if(e&&(Cr={errorThrown:!1,error:null}),t(),e){let{errorThrown:i,error:n}=Cr;if(Cr=null,i)throw n}}else t()}function Zb(t){wn.useDeprecatedSynchronousErrorHandling&&Cr&&(Cr.errorThrown=!0,Cr.error=t)}var Er=class extends ge{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,ec(e)&&e.add(this)):this.destination=FI}static create(e,i,n){return new hi(e,i,n)}next(e){this.isStopped?ah(Yb(e),this):this._next(e)}error(e){this.isStopped?ah(qb(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?ah(Gb,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},kI=Function.prototype.bind;function sh(t,e){return kI.call(t,e)}var lh=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:i}=this;if(i.next)try{i.next(e)}catch(n){nc(n)}}error(e){let{partialObserver:i}=this;if(i.error)try{i.error(e)}catch(n){nc(n)}else nc(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(i){nc(i)}}},hi=class extends Er{constructor(e,i,n){super();let r;if(H(e)||!e)r={next:e??void 0,error:i??void 0,complete:n??void 0};else{let o;this&&wn.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=()=>this.unsubscribe(),r={next:e.next&&sh(e.next,o),error:e.error&&sh(e.error,o),complete:e.complete&&sh(e.complete,o)}):r=e}this.destination=new lh(r)}};function nc(t){wn.useDeprecatedSynchronousErrorHandling?Zb(t):tc(t)}function NI(t){throw t}function ah(t,e){let{onStoppedNotification:i}=wn;i&&Co.setTimeout(()=>i(t,e))}var FI={closed:!0,next:fi,error:NI,complete:fi};var Io=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Rt(t){return t}function ch(...t){return dh(t)}function dh(t){return t.length===0?Rt:t.length===1?t[0]:function(i){return t.reduce((n,r)=>r(n),i)}}var q=(()=>{class t{constructor(i){i&&(this._subscribe=i)}lift(i){let n=new t;return n.source=this,n.operator=i,n}subscribe(i,n,r){let o=LI(i)?i:new hi(i,n,r);return Eo(()=>{let{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(i){try{return this._subscribe(i)}catch(n){i.error(n)}}forEach(i,n){return n=Qb(n),new n((r,o)=>{let s=new hi({next:a=>{try{i(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(i){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(i)}[Io](){return this}pipe(...i){return dh(i)(this)}toPromise(i){return i=Qb(i),new i((n,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>n(o))})}}return t.create=e=>new t(e),t})();function Qb(t){var e;return(e=t??wn.Promise)!==null&&e!==void 0?e:Promise}function PI(t){return t&&H(t.next)&&H(t.error)&&H(t.complete)}function LI(t){return t&&t instanceof Er||PI(t)&&ec(t)}function uh(t){return H(t?.lift)}function X(t){return e=>{if(uh(e))return e.lift(function(i){try{return t(i,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function J(t,e,i,n,r){return new fh(t,e,i,n,r)}var fh=class extends Er{constructor(e,i,n,r,o,s){super(e),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=i?function(a){try{i(a)}catch(l){e.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){e.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=n?function(){try{n()}catch(a){e.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:i}=this;super.unsubscribe(),!i&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}};function So(){return X((t,e)=>{let i=null;t._refCount++;let n=J(e,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount){i=null;return}let r=t._connection,o=i;i=null,r&&(!o||r===o)&&r.unsubscribe(),e.unsubscribe()});t.subscribe(n),n.closed||(i=t.connect())})}var Vn=class extends q{constructor(e,i){super(),this.source=e,this.subjectFactory=i,this._subject=null,this._refCount=0,this._connection=null,uh(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){let e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new ge;let i=this.getSubject();e.add(this.source.subscribe(J(i,void 0,()=>{this._teardown(),i.complete()},n=>{this._teardown(),i.error(n)},()=>this._teardown()))),e.closed&&(this._connection=null,e=ge.EMPTY)}return e}refCount(){return So()(this)}};var Kb=Do(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var M=(()=>{class t extends q{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(i){let n=new ic(this,this);return n.operator=i,n}_throwIfClosed(){if(this.closed)throw new Kb}next(i){Eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let n of this.currentObservers)n.next(i)}})}error(i){Eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=i;let{observers:n}=this;for(;n.length;)n.shift().error(i)}})}complete(){Eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:i}=this;for(;i.length;)i.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var i;return((i=this.observers)===null||i===void 0?void 0:i.length)>0}_trySubscribe(i){return this._throwIfClosed(),super._trySubscribe(i)}_subscribe(i){return this._throwIfClosed(),this._checkFinalizedStatuses(i),this._innerSubscribe(i)}_innerSubscribe(i){let{hasError:n,isStopped:r,observers:o}=this;return n||r?rh:(this.currentObservers=null,o.push(i),new ge(()=>{this.currentObservers=null,Dr(o,i)}))}_checkFinalizedStatuses(i){let{hasError:n,thrownError:r,isStopped:o}=this;n?i.error(r):o&&i.complete()}asObservable(){let i=new q;return i.source=this,i}}return t.create=(e,i)=>new ic(e,i),t})(),ic=class extends M{constructor(e,i){super(),this.destination=e,this.source=i}next(e){var i,n;(n=(i=this.destination)===null||i===void 0?void 0:i.next)===null||n===void 0||n.call(i,e)}error(e){var i,n;(n=(i=this.destination)===null||i===void 0?void 0:i.error)===null||n===void 0||n.call(i,e)}complete(){var e,i;(i=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||i===void 0||i.call(e)}_subscribe(e){var i,n;return(n=(i=this.source)===null||i===void 0?void 0:i.subscribe(e))!==null&&n!==void 0?n:rh}};var rt=class extends M{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let i=super._subscribe(e);return!i.closed&&e.next(this._value),i}getValue(){let{hasError:e,thrownError:i,_value:n}=this;if(e)throw i;return this._throwIfClosed(),n}next(e){super.next(this._value=e)}};var Xs={now(){return(Xs.delegate||Date).now()},delegate:void 0};var Ir=class extends M{constructor(e=1/0,i=1/0,n=Xs){super(),this._bufferSize=e,this._windowTime=i,this._timestampProvider=n,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=i===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,i)}next(e){let{isStopped:i,_buffer:n,_infiniteTimeWindow:r,_timestampProvider:o,_windowTime:s}=this;i||(n.push(e),!r&&n.push(o.now()+s)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();let i=this._innerSubscribe(e),{_infiniteTimeWindow:n,_buffer:r}=this,o=r.slice();for(let s=0;sXb(e)&&t()),e},clearImmediate(t){Xb(t)}};var{setImmediate:VI,clearImmediate:BI}=Jb,ea={setImmediate(...t){let{delegate:e}=ea;return(e?.setImmediate||VI)(...t)},clearImmediate(t){let{delegate:e}=ea;return(e?.clearImmediate||BI)(t)},delegate:void 0};var oc=class extends Mo{constructor(e,i){super(e,i),this.scheduler=e,this.work=i}requestAsyncId(e,i,n=0){return n!==null&&n>0?super.requestAsyncId(e,i,n):(e.actions.push(this),e._scheduled||(e._scheduled=ea.setImmediate(e.flush.bind(e,void 0))))}recycleAsyncId(e,i,n=0){var r;if(n!=null?n>0:this.delay>0)return super.recycleAsyncId(e,i,n);let{actions:o}=e;i!=null&&((r=o[o.length-1])===null||r===void 0?void 0:r.id)!==i&&(ea.clearImmediate(i),e._scheduled=void 0)}};var To=class t{constructor(e,i=t.now){this.schedulerActionCtor=e,this.now=i}schedule(e,i=0,n){return new this.schedulerActionCtor(this,e).schedule(n,i)}};To.now=Xs.now;var Ao=class extends To{constructor(e,i=To.now){super(e,i),this.actions=[],this._active=!1}flush(e){let{actions:i}=this;if(this._active){i.push(e);return}let n;this._active=!0;do if(n=e.execute(e.state,e.delay))break;while(e=i.shift());if(this._active=!1,n){for(;e=i.shift();)e.unsubscribe();throw n}}};var sc=class extends Ao{flush(e){this._active=!0;let i=this._scheduled;this._scheduled=void 0;let{actions:n}=this,r;e=e||n.shift();do if(r=e.execute(e.state,e.delay))break;while((e=n[0])&&e.id===i&&n.shift());if(this._active=!1,r){for(;(e=n[0])&&e.id===i&&n.shift();)e.unsubscribe();throw r}}};var ta=new sc(oc);var Sr=new Ao(Mo),e_=Sr;var _t=new q(t=>t.complete());function ac(t){return t&&H(t.schedule)}function ph(t){return t[t.length-1]}function lc(t){return H(ph(t))?t.pop():void 0}function Bn(t){return ac(ph(t))?t.pop():void 0}function t_(t,e){return typeof ph(t)=="number"?t.pop():e}function i_(t,e,i,n){function r(o){return o instanceof i?o:new i(function(s){s(o)})}return new(i||(i=Promise))(function(o,s){function a(d){try{c(n.next(d))}catch(u){s(u)}}function l(d){try{c(n.throw(d))}catch(u){s(u)}}function c(d){d.done?o(d.value):r(d.value).then(a,l)}c((n=n.apply(t,e||[])).next())})}function n_(t){var e=typeof Symbol=="function"&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Mr(t){return this instanceof Mr?(this.v=t,this):new Mr(t)}function r_(t,e,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=i.apply(t,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(f){n[f]&&(r[f]=function(m){return new Promise(function(p,_){o.push([f,m,p,_])>1||a(f,m)})})}function a(f,m){try{l(n[f](m))}catch(p){u(o[0][3],p)}}function l(f){f.value instanceof Mr?Promise.resolve(f.value.v).then(c,d):u(o[0][2],f)}function c(f){a("next",f)}function d(f){a("throw",f)}function u(f,m){f(m),o.shift(),o.length&&a(o[0][0],o[0][1])}}function o_(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],i;return e?e.call(t):(t=typeof n_=="function"?n_(t):t[Symbol.iterator](),i={},n("next"),n("throw"),n("return"),i[Symbol.asyncIterator]=function(){return this},i);function n(o){i[o]=t[o]&&function(s){return new Promise(function(a,l){s=t[o](s),r(a,l,s.done,s.value)})}}function r(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}}var Ro=t=>t&&typeof t.length=="number"&&typeof t!="function";function cc(t){return H(t?.then)}function dc(t){return H(t[Io])}function uc(t){return Symbol.asyncIterator&&H(t?.[Symbol.asyncIterator])}function fc(t){return new TypeError(`You provided ${t!==null&&typeof t=="object"?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function zI(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var hc=zI();function mc(t){return H(t?.[hc])}function pc(t){return r_(this,arguments,function*(){let i=t.getReader();try{for(;;){let{value:n,done:r}=yield Mr(i.read());if(r)return yield Mr(void 0);yield yield Mr(n)}}finally{i.releaseLock()}})}function gc(t){return H(t?.getReader)}function Se(t){if(t instanceof q)return t;if(t!=null){if(dc(t))return UI(t);if(Ro(t))return HI(t);if(cc(t))return $I(t);if(uc(t))return s_(t);if(mc(t))return WI(t);if(gc(t))return GI(t)}throw fc(t)}function UI(t){return new q(e=>{let i=t[Io]();if(H(i.subscribe))return i.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function HI(t){return new q(e=>{for(let i=0;i{t.then(i=>{e.closed||(e.next(i),e.complete())},i=>e.error(i)).then(null,tc)})}function WI(t){return new q(e=>{for(let i of t)if(e.next(i),e.closed)return;e.complete()})}function s_(t){return new q(e=>{qI(t,e).catch(i=>e.error(i))})}function GI(t){return s_(pc(t))}function qI(t,e){var i,n,r,o;return i_(this,void 0,void 0,function*(){try{for(i=o_(t);n=yield i.next(),!n.done;){let s=n.value;if(e.next(s),e.closed)return}}catch(s){r={error:s}}finally{try{n&&!n.done&&(o=i.return)&&(yield o.call(i))}finally{if(r)throw r.error}}e.complete()})}function jt(t,e,i,n=0,r=!1){let o=e.schedule(function(){i(),r?t.add(this.schedule(null,n)):this.unsubscribe()},n);if(t.add(o),!r)return o}function vc(t,e=0){return X((i,n)=>{i.subscribe(J(n,r=>jt(n,t,()=>n.next(r),e),()=>jt(n,t,()=>n.complete(),e),r=>jt(n,t,()=>n.error(r),e)))})}function bc(t,e=0){return X((i,n)=>{n.add(t.schedule(()=>i.subscribe(n),e))})}function a_(t,e){return Se(t).pipe(bc(e),vc(e))}function l_(t,e){return Se(t).pipe(bc(e),vc(e))}function c_(t,e){return new q(i=>{let n=0;return e.schedule(function(){n===t.length?i.complete():(i.next(t[n++]),i.closed||this.schedule())})})}function d_(t,e){return new q(i=>{let n;return jt(i,e,()=>{n=t[hc](),jt(i,e,()=>{let r,o;try{({value:r,done:o}=n.next())}catch(s){i.error(s);return}o?i.complete():i.next(r)},0,!0)}),()=>H(n?.return)&&n.return()})}function _c(t,e){if(!t)throw new Error("Iterable cannot be null");return new q(i=>{jt(i,e,()=>{let n=t[Symbol.asyncIterator]();jt(i,e,()=>{n.next().then(r=>{r.done?i.complete():i.next(r.value)})},0,!0)})})}function u_(t,e){return _c(pc(t),e)}function f_(t,e){if(t!=null){if(dc(t))return a_(t,e);if(Ro(t))return c_(t,e);if(cc(t))return l_(t,e);if(uc(t))return _c(t,e);if(mc(t))return d_(t,e);if(gc(t))return u_(t,e)}throw fc(t)}function $e(t,e){return e?f_(t,e):Se(t)}function k(...t){let e=Bn(t);return $e(t,e)}function zn(t,e){let i=H(t)?t:()=>t,n=r=>r.error(i());return new q(e?r=>e.schedule(n,0,r):n)}function Tr(t){return!!t&&(t instanceof q||H(t.lift)&&H(t.subscribe))}var mi=Do(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function h_(t){return t instanceof Date&&!isNaN(t)}function N(t,e){return X((i,n)=>{let r=0;i.subscribe(J(n,o=>{n.next(t.call(e,o,r++))}))})}var{isArray:YI}=Array;function ZI(t,e){return YI(e)?t(...e):t(e)}function Oo(t){return N(e=>ZI(t,e))}var{isArray:QI}=Array,{getPrototypeOf:KI,prototype:XI,keys:JI}=Object;function yc(t){if(t.length===1){let e=t[0];if(QI(e))return{args:e,keys:null};if(eS(e)){let i=JI(e);return{args:i.map(n=>e[n]),keys:i}}}return{args:t,keys:null}}function eS(t){return t&&typeof t=="object"&&KI(t)===XI}function wc(t,e){return t.reduce((i,n,r)=>(i[n]=e[r],i),{})}function ko(...t){let e=Bn(t),i=lc(t),{args:n,keys:r}=yc(t);if(n.length===0)return $e([],e);let o=new q(tS(n,e,r?s=>wc(r,s):Rt));return i?o.pipe(Oo(i)):o}function tS(t,e,i=Rt){return n=>{m_(e,()=>{let{length:r}=t,o=new Array(r),s=r,a=r;for(let l=0;l{let c=$e(t[l],e),d=!1;c.subscribe(J(n,u=>{o[l]=u,d||(d=!0,a--),a||n.next(i(o.slice()))},()=>{--s||n.complete()}))},n)},n)}}function m_(t,e,i){t?jt(i,t,e):e()}function p_(t,e,i,n,r,o,s,a){let l=[],c=0,d=0,u=!1,f=()=>{u&&!l.length&&!c&&e.complete()},m=_=>c{o&&e.next(_),c++;let x=!1;Se(i(_,d++)).subscribe(J(e,I=>{r?.(I),o?m(I):e.next(I)},()=>{x=!0},void 0,()=>{if(x)try{for(c--;l.length&&cp(I)):p(I)}f()}catch(I){e.error(I)}}))};return t.subscribe(J(e,m,()=>{u=!0,f()})),()=>{a?.()}}function Ke(t,e,i=1/0){return H(e)?Ke((n,r)=>N((o,s)=>e(n,o,r,s))(Se(t(n,r))),i):(typeof e=="number"&&(i=e),X((n,r)=>p_(n,r,t,i)))}function na(t=1/0){return Ke(Rt,t)}function g_(){return na(1)}function sn(...t){return g_()($e(t,Bn(t)))}function Gt(t){return new q(e=>{Se(t()).subscribe(e)})}function ia(...t){let e=lc(t),{args:i,keys:n}=yc(t),r=new q(o=>{let{length:s}=i;if(!s){o.complete();return}let a=new Array(s),l=s,c=s;for(let d=0;d{u||(u=!0,c--),a[d]=f},()=>l--,void 0,()=>{(!l||!u)&&(c||o.next(n?wc(n,a):a),o.complete())}))}});return e?r.pipe(Oo(e)):r}var nS=["addListener","removeListener"],iS=["addEventListener","removeEventListener"],rS=["on","off"];function Un(t,e,i,n){if(H(i)&&(n=i,i=void 0),n)return Un(t,e,i).pipe(Oo(n));let[r,o]=aS(t)?iS.map(s=>a=>t[s](e,a,i)):oS(t)?nS.map(v_(t,e)):sS(t)?rS.map(v_(t,e)):[];if(!r&&Ro(t))return Ke(s=>Un(s,e,i))(Se(t));if(!r)throw new TypeError("Invalid event target");return new q(s=>{let a=(...l)=>s.next(1o(a)})}function v_(t,e){return i=>n=>t[i](e,n)}function oS(t){return H(t.addListener)&&H(t.removeListener)}function sS(t){return H(t.on)&&H(t.off)}function aS(t){return H(t.addEventListener)&&H(t.removeEventListener)}function xc(t=0,e,i=e_){let n=-1;return e!=null&&(ac(e)?i=e:n=e),new q(r=>{let o=h_(t)?+t-i.now():t;o<0&&(o=0);let s=0;return i.schedule(function(){r.closed||(r.next(s++),0<=n?this.schedule(void 0,n):r.complete())},o)})}function gt(...t){let e=Bn(t),i=t_(t,1/0),n=t;return n.length?n.length===1?Se(n[0]):na(i)($e(n,e)):_t}var Ar=new q(fi);function ce(t,e){return X((i,n)=>{let r=0;i.subscribe(J(n,o=>t.call(e,o,r++)&&n.next(o)))})}function b_(t){return X((e,i)=>{let n=!1,r=null,o=null,s=!1,a=()=>{if(o?.unsubscribe(),o=null,n){n=!1;let c=r;r=null,i.next(c)}s&&i.complete()},l=()=>{o=null,s&&i.complete()};e.subscribe(J(i,c=>{n=!0,r=c,o||Se(t(c)).subscribe(o=J(i,a,l))},()=>{s=!0,(!n||!o||o.closed)&&i.complete()}))})}function Dc(t,e=Sr){return b_(()=>xc(t,e))}function Hn(t){return X((e,i)=>{let n=null,r=!1,o;n=e.subscribe(J(i,void 0,void 0,s=>{o=Se(t(s,Hn(t)(e))),n?(n.unsubscribe(),n=null,o.subscribe(i)):r=!0})),r&&(n.unsubscribe(),n=null,o.subscribe(i))})}function __(t,e,i,n,r){return(o,s)=>{let a=i,l=e,c=0;o.subscribe(J(s,d=>{let u=c++;l=a?t(l,d,u):(a=!0,d),n&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}function Wi(t,e){return H(e)?Ke(t,e,1):Ke(t,1)}function y_(t){return new q(e=>t.subscribe(e))}var lS={connector:()=>new M};function Cc(t,e=lS){let{connector:i}=e;return X((n,r)=>{let o=i();Se(t(y_(o))).subscribe(r),r.add(n.subscribe(o))})}function ra(t,e=Sr){return X((i,n)=>{let r=null,o=null,s=null,a=()=>{if(r){r.unsubscribe(),r=null;let c=o;o=null,n.next(c)}};function l(){let c=s+t,d=e.now();if(d{o=c,s=e.now(),r||(r=e.schedule(l,t),n.add(r))},()=>{a(),n.complete()},void 0,()=>{o=r=null}))})}function Gi(t){return X((e,i)=>{let n=!1;e.subscribe(J(i,r=>{n=!0,i.next(r)},()=>{n||i.next(t),i.complete()}))})}function Ee(t){return t<=0?()=>_t:X((e,i)=>{let n=0;e.subscribe(J(i,r=>{++n<=t&&(i.next(r),t<=n&&i.complete())}))})}function w_(){return X((t,e)=>{t.subscribe(J(e,fi))})}function oa(t){return N(()=>t)}function gh(t,e){return e?i=>sn(e.pipe(Ee(1),w_()),i.pipe(gh(t))):Ke((i,n)=>Se(t(i,n)).pipe(Ee(1),oa(i)))}function No(t,e=Sr){let i=xc(t,e);return gh(()=>i)}function Fo(t,e=Rt){return t=t??cS,X((i,n)=>{let r,o=!0;i.subscribe(J(n,s=>{let a=e(s);(o||!t(r,a))&&(o=!1,r=a,n.next(s))}))})}function cS(t,e){return t===e}function Ec(t=dS){return X((e,i)=>{let n=!1;e.subscribe(J(i,r=>{n=!0,i.next(r)},()=>n?i.complete():i.error(t())))})}function dS(){return new mi}function $n(t){return X((e,i)=>{try{e.subscribe(i)}finally{i.add(t)}})}function Wn(t,e){let i=arguments.length>=2;return n=>n.pipe(t?ce((r,o)=>t(r,o,n)):Rt,Ee(1),i?Gi(e):Ec(()=>new mi))}function Po(t){return t<=0?()=>_t:X((e,i)=>{let n=[];e.subscribe(J(i,r=>{n.push(r),t{for(let r of n)i.next(r);i.complete()},void 0,()=>{n=null}))})}function vh(t,e){let i=arguments.length>=2;return n=>n.pipe(t?ce((r,o)=>t(r,o,n)):Rt,Po(1),i?Gi(e):Ec(()=>new mi))}function x_(t,e){let i=H(t)?t:()=>t;return H(e)?Cc(e,{connector:i}):n=>new Vn(n,i)}function bh(t){return t?e=>Cc(t)(e):e=>x_(new M)(e)}function _h(t,e){return X(__(t,e,arguments.length>=2,!0))}function sa(t={}){let{connector:e=()=>new M,resetOnError:i=!0,resetOnComplete:n=!0,resetOnRefCountZero:r=!0}=t;return o=>{let s,a,l,c=0,d=!1,u=!1,f=()=>{a?.unsubscribe(),a=void 0},m=()=>{f(),s=l=void 0,d=u=!1},p=()=>{let _=s;m(),_?.unsubscribe()};return X((_,x)=>{c++,!u&&!d&&f();let I=l=l??e();x.add(()=>{c--,c===0&&!u&&!d&&(a=yh(p,r))}),I.subscribe(x),!s&&c>0&&(s=new hi({next:V=>I.next(V),error:V=>{u=!0,f(),a=yh(m,i,V),I.error(V)},complete:()=>{d=!0,f(),a=yh(m,n),I.complete()}}),Se(_).subscribe(s))})(o)}}function yh(t,e,...i){if(e===!0){t();return}if(e===!1)return;let n=new hi({next:()=>{n.unsubscribe(),t()}});return Se(e(...i)).subscribe(n)}function Ic(t,e,i){let n,r=!1;return t&&typeof t=="object"?{bufferSize:n=1/0,windowTime:e=1/0,refCount:r=!1,scheduler:i}=t:n=t??1/0,sa({connector:()=>new Ir(n,e,i),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}function aa(t){return ce((e,i)=>t<=i)}function yt(...t){let e=Bn(t);return X((i,n)=>{(e?sn(t,i,e):sn(t,i)).subscribe(n)})}function We(t,e){return X((i,n)=>{let r=null,o=0,s=!1,a=()=>s&&!r&&n.complete();i.subscribe(J(n,l=>{r?.unsubscribe();let c=0,d=o++;Se(t(l,d)).subscribe(r=J(n,u=>n.next(e?e(l,u,d,c++):u),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function fe(t){return X((e,i)=>{Se(t).subscribe(J(i,()=>i.complete(),fi)),!i.closed&&e.subscribe(i)})}function wh(t,e=!1){return X((i,n)=>{let r=0;i.subscribe(J(n,o=>{let s=t(o,r++);(s||e)&&n.next(o),!s&&n.complete()}))})}function Me(t,e,i){let n=H(t)||e||i?{next:t,error:e,complete:i}:t;return n?X((r,o)=>{var s;(s=n.subscribe)===null||s===void 0||s.call(n);let a=!0;r.subscribe(J(o,l=>{var c;(c=n.next)===null||c===void 0||c.call(n,l),o.next(l)},()=>{var l;a=!1,(l=n.complete)===null||l===void 0||l.call(n),o.complete()},l=>{var c;a=!1,(c=n.error)===null||c===void 0||c.call(n,l),o.error(l)},()=>{var l,c;a&&((l=n.unsubscribe)===null||l===void 0||l.call(n)),(c=n.finalize)===null||c===void 0||c.call(n)}))}):Rt}var fy="https://g.co/ng/security#xss",S=class extends Error{constructor(e,i){super(fd(e,i)),this.code=e}};function fd(t,e){return`${`NG0${Math.abs(t)}`}${e?": "+e:""}`}function _a(t){return{toString:t}.toString()}var Sc="__parameters__";function uS(t){return function(...i){if(t){let n=t(...i);for(let r in n)this[r]=n[r]}}}function hy(t,e,i){return _a(()=>{let n=uS(e);function r(...o){if(this instanceof r)return n.apply(this,o),this;let s=new r(...o);return a.annotation=s,a;function a(l,c,d){let u=l.hasOwnProperty(Sc)?l[Sc]:Object.defineProperty(l,Sc,{value:[]})[Sc];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),l}}return i&&(r.prototype=Object.create(i.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}var Cn=globalThis;function ze(t){for(let e in t)if(t[e]===ze)return e;throw Error("Could not find renamed property on target object.")}function fS(t,e){for(let i in e)e.hasOwnProperty(i)&&!t.hasOwnProperty(i)&&(t[i]=e[i])}function zt(t){if(typeof t=="string")return t;if(Array.isArray(t))return"["+t.map(zt).join(", ")+"]";if(t==null)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;let e=t.toString();if(e==null)return""+e;let i=e.indexOf(` +`);return i===-1?e:e.substring(0,i)}function jh(t,e){return t==null||t===""?e===null?"":e:e==null||e===""?t:t+" "+e}var hS=ze({__forward_ref__:ze});function tr(t){return t.__forward_ref__=tr,t.toString=function(){return zt(this())},t}function wt(t){return my(t)?t():t}function my(t){return typeof t=="function"&&t.hasOwnProperty(hS)&&t.__forward_ref__===tr}function C(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function de(t){return{providers:t.providers||[],imports:t.imports||[]}}function hd(t){return D_(t,gy)||D_(t,vy)}function py(t){return hd(t)!==null}function D_(t,e){return t.hasOwnProperty(e)?t[e]:null}function mS(t){let e=t&&(t[gy]||t[vy]);return e||null}function C_(t){return t&&(t.hasOwnProperty(E_)||t.hasOwnProperty(pS))?t[E_]:null}var gy=ze({\u0275prov:ze}),E_=ze({\u0275inj:ze}),vy=ze({ngInjectableDef:ze}),pS=ze({ngInjectorDef:ze}),D=class{constructor(e,i){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof i=="number"?this.__NG_ELEMENT_ID__=i:i!==void 0&&(this.\u0275prov=C({token:this,providedIn:i.providedIn||"root",factory:i.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function by(t){return t&&!!t.\u0275providers}var gS=ze({\u0275cmp:ze}),vS=ze({\u0275dir:ze}),bS=ze({\u0275pipe:ze}),_S=ze({\u0275mod:ze}),Bc=ze({\u0275fac:ze}),la=ze({__NG_ELEMENT_ID__:ze}),I_=ze({__NG_ENV_ID__:ze});function md(t){return typeof t=="string"?t:t==null?"":String(t)}function yS(t){return typeof t=="function"?t.name||t.toString():typeof t=="object"&&t!=null&&typeof t.type=="function"?t.type.name||t.type.toString():md(t)}function wS(t,e){let i=e?`. Dependency path: ${e.join(" > ")} > ${t}`:"";throw new S(-200,t)}function Wm(t,e){throw new S(-201,!1)}var we=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(we||{}),Vh;function _y(){return Vh}function Vt(t){let e=Vh;return Vh=t,e}function yy(t,e,i){let n=hd(t);if(n&&n.providedIn=="root")return n.value===void 0?n.value=n.factory():n.value;if(i&we.Optional)return null;if(e!==void 0)return e;Wm(t,"Injector")}var xS={},ca=xS,Bh="__NG_DI_FLAG__",zc="ngTempTokenPath",DS="ngTokenPath",CS=/\n/gm,ES="\u0275",S_="__source",Bo;function IS(){return Bo}function qi(t){let e=Bo;return Bo=t,e}function SS(t,e=we.Default){if(Bo===void 0)throw new S(-203,!1);return Bo===null?yy(t,void 0,e):Bo.get(t,e&we.Optional?null:void 0,e)}function g(t,e=we.Default){return(_y()||SS)(wt(t),e)}function y(t,e=we.Default){return g(t,pd(e))}function pd(t){return typeof t>"u"||typeof t=="number"?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function zh(t){let e=[];for(let i=0;i ");else if(typeof e=="object"){let o=[];for(let s in e)if(e.hasOwnProperty(s)){let a=e[s];o.push(s+":"+(typeof a=="string"?JSON.stringify(a):zt(a)))}r=`{${o.join(", ")}}`}return`${i}${n?"("+n+")":""}[${r}]: ${t.replace(CS,` + `)}`}var ya=wy(hy("Optional"),8);var gd=wy(hy("SkipSelf"),4);function Fr(t,e){let i=t.hasOwnProperty(Bc);return i?t[Bc]:null}function RS(t,e,i){if(t.length!==e.length)return!1;for(let n=0;nArray.isArray(i)?Gm(i,e):e(i))}function xy(t,e,i){e>=t.length?t.push(i):t.splice(e,0,i)}function Uc(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function kS(t,e){let i=[];for(let n=0;ne;){let o=r-2;t[r]=t[o],r--}t[e]=i,t[e+1]=n}}function vd(t,e,i){let n=wa(t,e);return n>=0?t[n|1]=i:(n=~n,NS(t,n,e,i)),n}function xh(t,e){let i=wa(t,e);if(i>=0)return t[i|1]}function wa(t,e){return FS(t,e,1)}function FS(t,e,i){let n=0,r=t.length>>i;for(;r!==n;){let o=n+(r-n>>1),s=t[o<e?r=o:n=o+1}return~(r<e){s=o-1;break}}}for(;o-1){let o;for(;++ro?u="":u=r[d+1].toLowerCase(),n&2&&c!==u){if(xn(n))return!1;s=!0}}}}return xn(n)||s}function xn(t){return(t&1)===0}function zS(t,e,i,n){if(e===null)return-1;let r=0;if(n||!i){let o=!1;for(;r-1)for(i++;i0?'="'+a+'"':"")+"]"}else n&8?r+="."+s:n&4&&(r+=" "+s);else r!==""&&!xn(s)&&(e+=T_(o,r),r=""),n=s,o=o||!xn(n);i++}return r!==""&&(e+=T_(o,r)),e}function qS(t){return t.map(GS).join(",")}function YS(t){let e=[],i=[],n=1,r=2;for(;n{let e=ky(t),i=Z(w({},e),{decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Ey.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Yn.Emulated,styles:t.styles||Bt,_:null,schemas:t.schemas||null,tView:null,id:""});Ny(i);let n=t.dependencies;return i.directiveDefs=R_(n,!1),i.pipeDefs=R_(n,!0),i.id=KS(i),i})}function ZS(t){return Pr(t)||Ym(t)}function QS(t){return t!==null}function ue(t){return _a(()=>({type:t.type,bootstrap:t.bootstrap||Bt,declarations:t.declarations||Bt,imports:t.imports||Bt,exports:t.exports||Bt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function A_(t,e){if(t==null)return pi;let i={};for(let n in t)if(t.hasOwnProperty(n)){let r=t[n],o,s,a=Ho.None;Array.isArray(r)?(a=r[0],o=r[1],s=r[2]??o):(o=r,s=r),e?(i[o]=a!==Ho.None?[n,a]:n,e[o]=s):i[o]=n}return i}function R(t){return _a(()=>{let e=ky(t);return Ny(e),e})}function Ty(t){return{type:t.type,name:t.name,factory:null,pure:t.pure!==!1,standalone:t.standalone===!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function Pr(t){return t[gS]||null}function Ym(t){return t[vS]||null}function Ay(t){return t[bS]||null}function Ry(t){let e=Pr(t)||Ym(t)||Ay(t);return e!==null?e.standalone:!1}function Oy(t,e){let i=t[_S]||null;if(!i&&e===!0)throw new Error(`Type ${zt(t)} does not have '\u0275mod' property.`);return i}function ky(t){let e={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:t.inputs||pi,exportAs:t.exportAs||null,standalone:t.standalone===!0,signals:t.signals===!0,selectors:t.selectors||Bt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:A_(t.inputs,e),outputs:A_(t.outputs),debugInfo:null}}function Ny(t){t.features?.forEach(e=>e(t))}function R_(t,e){if(!t)return null;let i=e?Ay:ZS;return()=>(typeof t=="function"?t():t).map(n=>i(n)).filter(QS)}function KS(t){let e=0,i=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(let r of i)e=Math.imul(31,e)+r.charCodeAt(0)<<0;return e+=2147483648,"c"+e}function Wr(t){return{\u0275providers:t}}function XS(...t){return{\u0275providers:Fy(!0,t),\u0275fromNgModule:!0}}function Fy(t,...e){let i=[],n=new Set,r,o=s=>{i.push(s)};return Gm(e,s=>{let a=s;Hh(a,o,[],n)&&(r||=[],r.push(a))}),r!==void 0&&Py(r,o),i}function Py(t,e){for(let i=0;i{e(o,n)})}}function Hh(t,e,i,n){if(t=wt(t),!t)return!1;let r=null,o=C_(t),s=!o&&Pr(t);if(!o&&!s){let l=t.ngModule;if(o=C_(l),o)r=l;else return!1}else{if(s&&!s.standalone)return!1;r=t}let a=n.has(r);if(s){if(a)return!1;if(n.add(r),s.dependencies){let l=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of l)Hh(c,e,i,n)}}else if(o){if(o.imports!=null&&!a){n.add(r);let c;try{Gm(o.imports,d=>{Hh(d,e,i,n)&&(c||=[],c.push(d))})}finally{}c!==void 0&&Py(c,e)}if(!a){let c=Fr(r)||(()=>new r);e({provide:r,useFactory:c,deps:Bt},r),e({provide:Cy,useValue:r,multi:!0},r),e({provide:Uo,useValue:()=>g(r),multi:!0},r)}let l=o.providers;if(l!=null&&!a){let c=t;Zm(l,d=>{e(d,c)})}}else return!1;return r!==t&&t.providers!==void 0}function Zm(t,e){for(let i of t)by(i)&&(i=i.\u0275providers),Array.isArray(i)?Zm(i,e):e(i)}var JS=ze({provide:String,useValue:ze});function Ly(t){return t!==null&&typeof t=="object"&&JS in t}function eM(t){return!!(t&&t.useExisting)}function tM(t){return!!(t&&t.useFactory)}function $o(t){return typeof t=="function"}function nM(t){return!!t.useClass}var bd=new D(""),kc={},iM={},Dh;function Qm(){return Dh===void 0&&(Dh=new Hc),Dh}var Mt=class{},ua=class extends Mt{get destroyed(){return this._destroyed}constructor(e,i,n,r){super(),this.parent=i,this.source=n,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Wh(e,s=>this.processProvider(s)),this.records.set(Dy,Lo(void 0,this)),r.has("environment")&&this.records.set(Mt,Lo(void 0,this));let o=this.records.get(bd);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Cy,Bt,we.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let e=Ce(null);try{for(let n of this._ngOnDestroyHooks)n.ngOnDestroy();let i=this._onDestroyHooks;this._onDestroyHooks=[];for(let n of i)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Ce(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();let i=qi(this),n=Vt(void 0),r;try{return e()}finally{qi(i),Vt(n)}}get(e,i=ca,n=we.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(I_))return e[I_](this);n=pd(n);let r,o=qi(this),s=Vt(void 0);try{if(!(n&we.SkipSelf)){let l=this.records.get(e);if(l===void 0){let c=lM(e)&&hd(e);c&&this.injectableDefInScope(c)?l=Lo($h(e),kc):l=null,this.records.set(e,l)}if(l!=null)return this.hydrate(e,l)}let a=n&we.Self?Qm():this.parent;return i=n&we.Optional&&i===ca?null:i,a.get(e,i)}catch(a){if(a.name==="NullInjectorError"){if((a[zc]=a[zc]||[]).unshift(zt(e)),o)throw a;return TS(a,e,"R3InjectorError",this.source)}else throw a}finally{Vt(s),qi(o)}}resolveInjectorInitializers(){let e=Ce(null),i=qi(this),n=Vt(void 0),r;try{let o=this.get(Uo,Bt,we.Self);for(let s of o)s()}finally{qi(i),Vt(n),Ce(e)}}toString(){let e=[],i=this.records;for(let n of i.keys())e.push(zt(n));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new S(205,!1)}processProvider(e){e=wt(e);let i=$o(e)?e:wt(e&&e.provide),n=oM(e);if(!$o(e)&&e.multi===!0){let r=this.records.get(i);r||(r=Lo(void 0,kc,!0),r.factory=()=>zh(r.multi),this.records.set(i,r)),i=e,r.multi.push(e)}this.records.set(i,n)}hydrate(e,i){let n=Ce(null);try{return i.value===kc&&(i.value=iM,i.value=i.factory()),typeof i.value=="object"&&i.value&&aM(i.value)&&this._ngOnDestroyHooks.add(i.value),i.value}finally{Ce(n)}}injectableDefInScope(e){if(!e.providedIn)return!1;let i=wt(e.providedIn);return typeof i=="string"?i==="any"||this.scopes.has(i):this.injectorDefTypes.has(i)}removeOnDestroy(e){let i=this._onDestroyHooks.indexOf(e);i!==-1&&this._onDestroyHooks.splice(i,1)}};function $h(t){let e=hd(t),i=e!==null?e.factory:Fr(t);if(i!==null)return i;if(t instanceof D)throw new S(204,!1);if(t instanceof Function)return rM(t);throw new S(204,!1)}function rM(t){if(t.length>0)throw new S(204,!1);let i=mS(t);return i!==null?()=>i.factory(t):()=>new t}function oM(t){if(Ly(t))return Lo(void 0,t.useValue);{let e=jy(t);return Lo(e,kc)}}function jy(t,e,i){let n;if($o(t)){let r=wt(t);return Fr(r)||$h(r)}else if(Ly(t))n=()=>wt(t.useValue);else if(tM(t))n=()=>t.useFactory(...zh(t.deps||[]));else if(eM(t))n=()=>g(wt(t.useExisting));else{let r=wt(t&&(t.useClass||t.provide));if(sM(t))n=()=>new r(...zh(t.deps));else return Fr(r)||$h(r)}return n}function Lo(t,e,i=!1){return{factory:t,value:e,multi:i?[]:void 0}}function sM(t){return!!t.deps}function aM(t){return t!==null&&typeof t=="object"&&typeof t.ngOnDestroy=="function"}function lM(t){return typeof t=="function"||typeof t=="object"&&t instanceof D}function Wh(t,e){for(let i of t)Array.isArray(i)?Wh(i,e):i&&by(i)?Wh(i.\u0275providers,e):e(i)}function Yt(t,e){t instanceof ua&&t.assertNotDestroyed();let i,n=qi(t),r=Vt(void 0);try{return e()}finally{qi(n),Vt(r)}}function Vy(){return _y()!==void 0||IS()!=null}function Km(t){if(!Vy())throw new S(-203,!1)}function cM(t){return typeof t=="function"}var Kn=0,oe=1,ee=2,Tt=3,En=4,Ut=5,Wo=6,$c=7,It=8,Go=9,Zn=10,Ze=11,fa=12,O_=13,Xo=14,qt=15,Lr=16,jo=17,gi=18,_d=19,By=20,Yi=21,Nc=22,jr=23,xt=25,Xm=1;var Vr=7,Wc=8,qo=9,St=10,Gc=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(Gc||{});function Zi(t){return Array.isArray(t)&&typeof t[Xm]=="object"}function yi(t){return Array.isArray(t)&&t[Xm]===!0}function Jm(t){return(t.flags&4)!==0}function yd(t){return t.componentOffset>-1}function wd(t){return(t.flags&1)===1}function vi(t){return!!t.template}function Gh(t){return(t[ee]&512)!==0}var qh=class{constructor(e,i,n){this.previousValue=e,this.currentValue=i,this.firstChange=n}isFirstChange(){return this.firstChange}};function zy(t,e,i,n){e!==null?e.applyValueToInputSignal(e,n):t[i]=n}function Xe(){return Uy}function Uy(t){return t.type.prototype.ngOnChanges&&(t.setInput=uM),dM}Xe.ngInherit=!0;function dM(){let t=$y(this),e=t?.current;if(e){let i=t.previous;if(i===pi)t.previous=e;else for(let n in e)i[n]=e[n];t.current=null,this.ngOnChanges(e)}}function uM(t,e,i,n,r){let o=this.declaredInputs[n],s=$y(t)||fM(t,{previous:pi,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[o];a[o]=new qh(c&&c.currentValue,i,l===pi),zy(t,e,r,i)}var Hy="__ngSimpleChanges__";function $y(t){return t[Hy]||null}function fM(t,e){return t[Hy]=e}var k_=null;var Gn=function(t,e,i){k_?.(t,e,i)},Wy="svg",hM="math";function Qn(t){for(;Array.isArray(t);)t=t[Kn];return t}function mM(t){for(;Array.isArray(t);){if(typeof t[Xm]=="object")return t;t=t[Kn]}return null}function Gy(t,e){return Qn(e[t])}function ln(t,e){return Qn(e[t.index])}function ep(t,e){return t.data[e]}function qy(t,e){return t[e]}function nr(t,e){let i=e[t];return Zi(i)?i:i[Kn]}function pM(t){return(t[ee]&4)===4}function tp(t){return(t[ee]&128)===128}function gM(t){return yi(t[Tt])}function Qi(t,e){return e==null?null:t[e]}function Yy(t){t[jo]=0}function vM(t){t[ee]&1024||(t[ee]|=1024,tp(t)&&xd(t))}function bM(t,e){for(;t>0;)e=e[Xo],t--;return e}function ha(t){return!!(t[ee]&9216||t[jr]?.dirty)}function Yh(t){t[Zn].changeDetectionScheduler?.notify(7),t[ee]&64&&(t[ee]|=1024),ha(t)&&xd(t)}function xd(t){t[Zn].changeDetectionScheduler?.notify(0);let e=ma(t);for(;e!==null&&!(e[ee]&8192||(e[ee]|=8192,!tp(e)));)e=ma(e)}function Zy(t,e){if((t[ee]&256)===256)throw new S(911,!1);t[Yi]===null&&(t[Yi]=[]),t[Yi].push(e)}function _M(t,e){if(t[Yi]===null)return;let i=t[Yi].indexOf(e);i!==-1&&t[Yi].splice(i,1)}function ma(t){let e=t[Tt];return yi(e)?e[Tt]:e}var he={lFrame:s0(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Qy=!1;function yM(){return he.lFrame.elementDepthCount}function wM(){he.lFrame.elementDepthCount++}function xM(){he.lFrame.elementDepthCount--}function Ky(){return he.bindingsEnabled}function Xy(){return he.skipHydrationRootTNode!==null}function DM(t){return he.skipHydrationRootTNode===t}function CM(){he.skipHydrationRootTNode=null}function se(){return he.lFrame.lView}function qe(){return he.lFrame.tView}function Te(t){return he.lFrame.contextLView=t,t[It]}function Ae(t){return he.lFrame.contextLView=null,t}function vt(){let t=Jy();for(;t!==null&&t.type===64;)t=t.parent;return t}function Jy(){return he.lFrame.currentTNode}function EM(){let t=he.lFrame,e=t.currentTNode;return t.isParent?e:e.parent}function Gr(t,e){let i=he.lFrame;i.currentTNode=t,i.isParent=e}function np(){return he.lFrame.isParent}function ip(){he.lFrame.isParent=!1}function IM(){return he.lFrame.contextLView}function e0(){return Qy}function N_(t){Qy=t}function t0(){let t=he.lFrame,e=t.bindingRootIndex;return e===-1&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function SM(t){return he.lFrame.bindingIndex=t}function ir(){return he.lFrame.bindingIndex++}function n0(t){let e=he.lFrame,i=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,i}function MM(){return he.lFrame.inI18n}function TM(t,e){let i=he.lFrame;i.bindingIndex=i.bindingRootIndex=t,Zh(e)}function AM(){return he.lFrame.currentDirectiveIndex}function Zh(t){he.lFrame.currentDirectiveIndex=t}function rp(t){let e=he.lFrame.currentDirectiveIndex;return e===-1?null:t[e]}function i0(){return he.lFrame.currentQueryIndex}function op(t){he.lFrame.currentQueryIndex=t}function RM(t){let e=t[oe];return e.type===2?e.declTNode:e.type===1?t[Ut]:null}function r0(t,e,i){if(i&we.SkipSelf){let r=e,o=t;for(;r=r.parent,r===null&&!(i&we.Host);)if(r=RM(o),r===null||(o=o[Xo],r.type&10))break;if(r===null)return!1;e=r,t=o}let n=he.lFrame=o0();return n.currentTNode=e,n.lView=t,!0}function sp(t){let e=o0(),i=t[oe];he.lFrame=e,e.currentTNode=i.firstChild,e.lView=t,e.tView=i,e.contextLView=t,e.bindingIndex=i.bindingStartIndex,e.inI18n=!1}function o0(){let t=he.lFrame,e=t===null?null:t.child;return e===null?s0(t):e}function s0(t){let e={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:t,child:null,inI18n:!1};return t!==null&&(t.child=e),e}function a0(){let t=he.lFrame;return he.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}var l0=a0;function ap(){let t=a0();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function OM(t){return(he.lFrame.contextLView=bM(t,he.lFrame.contextLView))[It]}function rr(){return he.lFrame.selectedIndex}function Br(t){he.lFrame.selectedIndex=t}function xa(){let t=he.lFrame;return ep(t.tView,t.selectedIndex)}function wi(){he.lFrame.currentNamespace=Wy}function c0(){kM()}function kM(){he.lFrame.currentNamespace=null}function NM(){return he.lFrame.currentNamespace}var d0=!0;function Dd(){return d0}function Cd(t){d0=t}function FM(t,e,i){let{ngOnChanges:n,ngOnInit:r,ngDoCheck:o}=e.type.prototype;if(n){let s=Uy(e);(i.preOrderHooks??=[]).push(t,s),(i.preOrderCheckHooks??=[]).push(t,s)}r&&(i.preOrderHooks??=[]).push(0-t,r),o&&((i.preOrderHooks??=[]).push(t,o),(i.preOrderCheckHooks??=[]).push(t,o))}function Ed(t,e){for(let i=e.directiveStart,n=e.directiveEnd;i=n)break}else e[l]<0&&(t[jo]+=65536),(a>14>16&&(t[ee]&3)===e&&(t[ee]+=16384,F_(a,o)):F_(a,o)}var zo=-1,zr=class{constructor(e,i,n){this.factory=e,this.resolving=!1,this.canSeeViewProviders=i,this.injectImpl=n}};function LM(t){return t instanceof zr}function jM(t){return(t.flags&8)!==0}function VM(t){return(t.flags&16)!==0}function f0(t){return t!==zo}function qc(t){return t&32767}function BM(t){return t>>16}function Yc(t,e){let i=BM(t),n=e;for(;i>0;)n=n[Xo],i--;return n}var Qh=!0;function Zc(t){let e=Qh;return Qh=t,e}var zM=256,h0=zM-1,m0=5,UM=0,qn={};function HM(t,e,i){let n;typeof i=="string"?n=i.charCodeAt(0)||0:i.hasOwnProperty(la)&&(n=i[la]),n==null&&(n=i[la]=UM++);let r=n&h0,o=1<>m0)]|=o}function Qc(t,e){let i=p0(t,e);if(i!==-1)return i;let n=e[oe];n.firstCreatePass&&(t.injectorIndex=e.length,Eh(n.data,t),Eh(e,null),Eh(n.blueprint,null));let r=lp(t,e),o=t.injectorIndex;if(f0(r)){let s=qc(r),a=Yc(r,e),l=a[oe].data;for(let c=0;c<8;c++)e[o+c]=a[s+c]|l[s+c]}return e[o+8]=r,o}function Eh(t,e){t.push(0,0,0,0,0,0,0,0,e)}function p0(t,e){return t.injectorIndex===-1||t.parent&&t.parent.injectorIndex===t.injectorIndex||e[t.injectorIndex+8]===null?-1:t.injectorIndex}function lp(t,e){if(t.parent&&t.parent.injectorIndex!==-1)return t.parent.injectorIndex;let i=0,n=null,r=e;for(;r!==null;){if(n=y0(r),n===null)return zo;if(i++,r=r[Xo],n.injectorIndex!==-1)return n.injectorIndex|i<<16}return zo}function Kh(t,e,i){HM(t,e,i)}function $M(t,e){if(e==="class")return t.classes;if(e==="style")return t.styles;let i=t.attrs;if(i){let n=i.length,r=0;for(;r>20,u=n?a:a+d,f=r?a+d:c;for(let m=u;m=l&&p.type===i)return m}if(r){let m=s[l];if(m&&vi(m)&&m.type===i)return l}return null}function Ur(t,e,i,n){let r=t[i],o=e.data;if(LM(r)){let s=r;s.resolving&&wS(yS(o[i]));let a=Zc(s.canSeeViewProviders);s.resolving=!0;let l,c=s.injectImpl?Vt(s.injectImpl):null,d=r0(t,n,we.Default);try{r=t[i]=s.factory(void 0,o,t,n),e.firstCreatePass&&i>=n.directiveStart&&FM(i,o[i],e)}finally{c!==null&&Vt(c),Zc(a),s.resolving=!1,l0()}}return r}function GM(t){if(typeof t=="string")return t.charCodeAt(0)||0;let e=t.hasOwnProperty(la)?t[la]:void 0;return typeof e=="number"?e>=0?e&h0:qM:e}function P_(t,e,i){let n=1<>m0)]&n)}function L_(t,e){return!(t&we.Self)&&!(t&we.Host&&e)}var Nr=class{constructor(e,i){this._tNode=e,this._lView=i}get(e,i,n){return b0(this._tNode,this._lView,e,pd(n),i)}};function qM(){return new Nr(vt(),se())}function at(t){return _a(()=>{let e=t.prototype.constructor,i=e[Bc]||Xh(e),n=Object.prototype,r=Object.getPrototypeOf(t.prototype).constructor;for(;r&&r!==n;){let o=r[Bc]||Xh(r);if(o&&o!==i)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function Xh(t){return my(t)?()=>{let e=Xh(wt(t));return e&&e()}:Fr(t)}function YM(t,e,i,n,r){let o=t,s=e;for(;o!==null&&s!==null&&s[ee]&2048&&!(s[ee]&512);){let a=_0(o,s,i,n|we.Self,qn);if(a!==qn)return a;let l=o.parent;if(!l){let c=s[By];if(c){let d=c.get(i,qn,n);if(d!==qn)return d}l=y0(s),s=s[Xo]}o=l}return r}function y0(t){let e=t[oe],i=e.type;return i===2?e.declTNode:i===1?t[Ut]:null}function xi(t){return $M(vt(),t)}function j_(t,e=null,i=null,n){let r=w0(t,e,i,n);return r.resolveInjectorInitializers(),r}function w0(t,e=null,i=null,n,r=new Set){let o=[i||Bt,XS(t)];return n=n||(typeof t=="object"?void 0:zt(t)),new ua(o,e||Qm(),n||null,r)}var Or=class Or{static create(e,i){if(Array.isArray(e))return j_({name:""},i,e,"");{let n=e.name??"";return j_({name:n},e.parent,e.providers,n)}}};Or.THROW_IF_NOT_FOUND=ca,Or.NULL=new Hc,Or.\u0275prov=C({token:Or,providedIn:"any",factory:()=>g(Dy)}),Or.__NG_ELEMENT_ID__=-1;var me=Or;var ZM=new D("");ZM.__NG_ELEMENT_ID__=t=>{let e=vt();if(e===null)throw new S(204,!1);if(e.type&2)return e.value;if(t&we.Optional)return null;throw new S(204,!1)};var QM="ngOriginalError";function Ih(t){return t[QM]}var Ot=class{constructor(){this._console=console}handleError(e){let i=this._findOriginalError(e);this._console.error("ERROR",e),i&&this._console.error("ORIGINAL ERROR",i)}_findOriginalError(e){let i=e&&Ih(e);for(;i&&Ih(i);)i=Ih(i);return i||null}},x0=new D("",{providedIn:"root",factory:()=>y(Ot).handleError.bind(void 0)}),Da=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=KM,e.__NG_ENV_ID__=n=>n;let t=e;return t})(),Jh=class extends Da{constructor(e){super(),this._lView=e}onDestroy(e){return Zy(this._lView,e),()=>_M(this._lView,e)}};function KM(){return new Jh(se())}function XM(){return Jo(vt(),se())}function Jo(t,e){return new O(ln(t,e))}var O=(()=>{let e=class e{constructor(n){this.nativeElement=n}};e.__NG_ELEMENT_ID__=XM;let t=e;return t})();function JM(t){return t instanceof O?t.nativeElement:t}var em=class extends M{constructor(e=!1){super(),this.destroyRef=void 0,this.__isAsync=e,Vy()&&(this.destroyRef=y(Da,{optional:!0})??void 0)}emit(e){let i=Ce(null);try{super.next(e)}finally{Ce(i)}}subscribe(e,i,n){let r=e,o=i||(()=>null),s=n;if(e&&typeof e=="object"){let l=e;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Sh(o),r&&(r=Sh(r)),s&&(s=Sh(s)));let a=super.subscribe({next:r,error:o,complete:s});return e instanceof ge&&e.add(a),a}};function Sh(t){return e=>{setTimeout(t,void 0,e)}}var G=em;function eT(){return this._results[Symbol.iterator]()}var Ki=class t{get changes(){return this._changes??=new G}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let i=t.prototype;i[Symbol.iterator]||(i[Symbol.iterator]=eT)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,i){return this._results.reduce(e,i)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,i){this.dirty=!1;let n=OS(e);(this._changesDetected=!RS(this._results,n,i))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function D0(t){return(t.flags&128)===128}var C0=new Map,tT=0;function nT(){return tT++}function iT(t){C0.set(t[_d],t)}function rT(t){C0.delete(t[_d])}var V_="__ngContext__";function Xi(t,e){Zi(e)?(t[V_]=e[_d],iT(e)):t[V_]=e}function E0(t){return S0(t[fa])}function I0(t){return S0(t[En])}function S0(t){for(;t!==null&&!yi(t);)t=t[En];return t}var tm;function M0(t){tm=t}function T0(){if(tm!==void 0)return tm;if(typeof document<"u")return document;throw new S(210,!1)}var Ca=new D("",{providedIn:"root",factory:()=>oT}),oT="ng",cp=new D(""),Ht=new D("",{providedIn:"platform",factory:()=>"unknown"});var ft=new D(""),Ea=new D("",{providedIn:"root",factory:()=>T0().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var sT="h",aT="b";var lT=()=>null;function dp(t,e,i=!1){return lT(t,e,i)}var A0=!1,cT=new D("",{providedIn:"root",factory:()=>A0});var Mc;function dT(){if(Mc===void 0&&(Mc=null,Cn.trustedTypes))try{Mc=Cn.trustedTypes.createPolicy("angular",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Mc}function Id(t){return dT()?.createHTML(t)||t}var Tc;function uT(){if(Tc===void 0&&(Tc=null,Cn.trustedTypes))try{Tc=Cn.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Tc}function B_(t){return uT()?.createHTML(t)||t}var bi=class{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${fy})`}},nm=class extends bi{getTypeName(){return"HTML"}},im=class extends bi{getTypeName(){return"Style"}},rm=class extends bi{getTypeName(){return"Script"}},om=class extends bi{getTypeName(){return"URL"}},sm=class extends bi{getTypeName(){return"ResourceURL"}};function Xn(t){return t instanceof bi?t.changingThisBreaksApplicationSecurity:t}function qr(t,e){let i=fT(t);if(i!=null&&i!==e){if(i==="ResourceURL"&&e==="URL")return!0;throw new Error(`Required a safe ${e}, got a ${i} (see ${fy})`)}return i===e}function fT(t){return t instanceof bi&&t.getTypeName()||null}function R0(t){return new nm(t)}function O0(t){return new im(t)}function k0(t){return new rm(t)}function N0(t){return new om(t)}function F0(t){return new sm(t)}function hT(t){let e=new lm(t);return mT()?new am(e):e}var am=class{constructor(e){this.inertDocumentHelper=e}getInertBodyElement(e){e=""+e;try{let i=new window.DOMParser().parseFromString(Id(e),"text/html").body;return i===null?this.inertDocumentHelper.getInertBodyElement(e):(i.removeChild(i.firstChild),i)}catch{return null}}},lm=class{constructor(e){this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(e){let i=this.inertDocument.createElement("template");return i.innerHTML=Id(e),i}};function mT(){try{return!!new window.DOMParser().parseFromString(Id(""),"text/html")}catch{return!1}}var pT=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function up(t){return t=String(t),t.match(pT)?t:"unsafe:"+t}function Di(t){let e={};for(let i of t.split(","))e[i]=!0;return e}function Ia(...t){let e={};for(let i of t)for(let n in i)i.hasOwnProperty(n)&&(e[n]=!0);return e}var P0=Di("area,br,col,hr,img,wbr"),L0=Di("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),j0=Di("rp,rt"),gT=Ia(j0,L0),vT=Ia(L0,Di("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")),bT=Ia(j0,Di("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")),z_=Ia(P0,vT,bT,gT),V0=Di("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),_T=Di("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,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),yT=Di("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"),wT=Ia(V0,_T,yT),xT=Di("script,style,template"),cm=class{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(e){let i=e.firstChild,n=!0,r=[];for(;i;){if(i.nodeType===Node.ELEMENT_NODE?n=this.startElement(i):i.nodeType===Node.TEXT_NODE?this.chars(i.nodeValue):this.sanitizedSomething=!0,n&&i.firstChild){r.push(i),i=ET(i);continue}for(;i;){i.nodeType===Node.ELEMENT_NODE&&this.endElement(i);let o=CT(i);if(o){i=o;break}i=r.pop()}}return this.buf.join("")}startElement(e){let i=U_(e).toLowerCase();if(!z_.hasOwnProperty(i))return this.sanitizedSomething=!0,!xT.hasOwnProperty(i);this.buf.push("<"),this.buf.push(i);let n=e.attributes;for(let r=0;r"),!0}endElement(e){let i=U_(e).toLowerCase();z_.hasOwnProperty(i)&&!P0.hasOwnProperty(i)&&(this.buf.push(""))}chars(e){this.buf.push(H_(e))}};function DT(t,e){return(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function CT(t){let e=t.nextSibling;if(e&&t!==e.previousSibling)throw B0(e);return e}function ET(t){let e=t.firstChild;if(e&&DT(t,e))throw B0(e);return e}function U_(t){let e=t.nodeName;return typeof e=="string"?e:"FORM"}function B0(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}var IT=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ST=/([^\#-~ |!])/g;function H_(t){return t.replace(/&/g,"&").replace(IT,function(e){let i=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+((i-55296)*1024+(n-56320)+65536)+";"}).replace(ST,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}var Ac;function fp(t,e){let i=null;try{Ac=Ac||hT(t);let n=e?String(e):"";i=Ac.getInertBodyElement(n);let r=5,o=n;do{if(r===0)throw new Error("Failed to sanitize html because the input is unstable");r--,n=o,o=i.innerHTML,i=Ac.getInertBodyElement(n)}while(n!==o);let a=new cm().sanitizeChildren($_(i)||i);return Id(a)}finally{if(i){let n=$_(i)||i;for(;n.firstChild;)n.removeChild(n.firstChild)}}}function $_(t){return"content"in t&&MT(t)?t.content:null}function MT(t){return t.nodeType===Node.ELEMENT_NODE&&t.nodeName==="TEMPLATE"}var kt=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(kt||{});function z0(t){let e=TT();return e?B_(e.sanitize(kt.HTML,t)||""):qr(t,"HTML")?B_(Xn(t)):fp(T0(),md(t))}function TT(){let t=se();return t&&t[Zn].sanitizer}var AT=/^>|^->||--!>|)/g,OT="\u200B$1\u200B";function kT(t){return t.replace(AT,e=>e.replace(RT,OT))}function U0(t){return t instanceof Function?t():t}function H0(t){return(t??y(me)).get(Ht)==="browser"}var _i=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(_i||{}),NT;function hp(t,e){return NT(t,e)}function Vo(t,e,i,n,r){if(n!=null){let o,s=!1;yi(n)?o=n:Zi(n)&&(s=!0,n=n[Kn]);let a=Qn(n);t===0&&i!==null?r==null?Y0(e,i,a):Kc(e,i,a,r||null,!0):t===1&&i!==null?Kc(e,i,a,r||null,!0):t===2?ZT(e,a,s):t===3&&e.destroyNode(a),o!=null&&KT(e,t,o,i,r)}}function FT(t,e){return t.createText(e)}function PT(t,e,i){t.setValue(e,i)}function LT(t,e){return t.createComment(kT(e))}function $0(t,e,i){return t.createElement(e,i)}function jT(t,e){W0(t,e),e[Kn]=null,e[Ut]=null}function VT(t,e,i,n,r,o){n[Kn]=r,n[Ut]=e,Td(t,n,i,1,r,o)}function W0(t,e){e[Zn].changeDetectionScheduler?.notify(8),Td(t,e,e[Ze],2,null,null)}function BT(t){let e=t[fa];if(!e)return Mh(t[oe],t);for(;e;){let i=null;if(Zi(e))i=e[fa];else{let n=e[St];n&&(i=n)}if(!i){for(;e&&!e[En]&&e!==t;)Zi(e)&&Mh(e[oe],e),e=e[Tt];e===null&&(e=t),Zi(e)&&Mh(e[oe],e),i=e&&e[En]}e=i}}function zT(t,e,i,n){let r=St+n,o=i.length;n>0&&(i[r-1][En]=e),n0&&(t[i-1][En]=n[En]);let o=Uc(t,St+e);jT(n[oe],n);let s=o[gi];s!==null&&s.detachView(o[oe]),n[Tt]=null,n[En]=null,n[ee]&=-129}return n}function Sd(t,e){if(!(e[ee]&256)){let i=e[Ze];i.destroyNode&&Td(t,e,i,3,null,null),BT(e)}}function Mh(t,e){if(e[ee]&256)return;let i=Ce(null);try{e[ee]&=-129,e[ee]|=256,e[jr]&&nh(e[jr]),HT(t,e),UT(t,e),e[oe].type===1&&e[Ze].destroy();let n=e[Lr];if(n!==null&&yi(e[Tt])){n!==e[Tt]&&mp(n,e);let r=e[gi];r!==null&&r.detachView(t)}rT(e)}finally{Ce(i)}}function UT(t,e){let i=t.cleanup,n=e[$c];if(i!==null)for(let o=0;o=0?n[s]():n[-s].unsubscribe(),o+=2}else{let s=n[i[o+1]];i[o].call(s)}n!==null&&(e[$c]=null);let r=e[Yi];if(r!==null){e[Yi]=null;for(let o=0;o-1){let{encapsulation:o}=t.data[n.directiveStart+r];if(o===Yn.None||o===Yn.Emulated)return null}return ln(n,i)}}function Kc(t,e,i,n,r){t.insertBefore(e,i,n,r)}function Y0(t,e,i){t.appendChild(e,i)}function W_(t,e,i,n,r){n!==null?Kc(t,e,i,n,r):Y0(t,e,i)}function WT(t,e,i,n){t.removeChild(e,i,n)}function pp(t,e){return t.parentNode(e)}function GT(t,e){return t.nextSibling(e)}function Z0(t,e,i){return YT(t,e,i)}function qT(t,e,i){return t.type&40?ln(t,i):null}var YT=qT,G_;function Md(t,e,i,n){let r=q0(t,n,e),o=e[Ze],s=n.parent||e[Ut],a=Z0(s,n,e);if(r!=null)if(Array.isArray(i))for(let l=0;lxt&&ew(t,e,xt,!1),Gn(s?2:0,r),i(n,r)}finally{Br(o),Gn(s?3:1,r)}}function bp(t,e,i){if(Jm(e)){let n=Ce(null);try{let r=e.directiveStart,o=e.directiveEnd;for(let s=r;snull;function sA(t,e,i,n){let r=cw(e);r.push(i),t.firstCreatePass&&dw(t).push(n,r.length-1)}function aA(t,e,i,n,r,o){let s=e?e.injectorIndex:-1,a=0;return Xy()&&(a|=128),{type:i,index:n,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:r,attrs:o,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function q_(t,e,i,n,r){for(let o in e){if(!e.hasOwnProperty(o))continue;let s=e[o];if(s===void 0)continue;n??={};let a,l=Ho.None;Array.isArray(s)?(a=s[0],l=s[1]):a=s;let c=o;if(r!==null){if(!r.hasOwnProperty(o))continue;c=r[o]}t===0?Y_(n,i,c,a,l):Y_(n,i,c,a)}return n}function Y_(t,e,i,n,r){let o;t.hasOwnProperty(i)?(o=t[i]).push(e,n):o=t[i]=[e,n],r!==void 0&&o.push(r)}function lA(t,e,i){let n=e.directiveStart,r=e.directiveEnd,o=t.data,s=e.attrs,a=[],l=null,c=null;for(let d=n;d0;){let i=t[--e];if(typeof i=="number"&&i<0)return i}return 0}function hA(t,e,i,n){let r=i.directiveStart,o=i.directiveEnd;yd(i)&&yA(e,i,t.data[r+i.componentOffset]),t.firstCreatePass||Qc(i,e),Xi(n,e);let s=i.initialInputs;for(let a=r;a{xd(t.lView)},consumerOnSignalRead(){this.lView[jr]=this}}),NA=100;function gw(t,e=!0,i=0){let n=t[Zn],r=n.rendererFactory,o=!1;o||r.begin?.();try{FA(t,i)}catch(s){throw e&&fw(t,s),s}finally{o||(r.end?.(),n.inlineEffectRunner?.flush())}}function FA(t,e){let i=e0();try{N_(!0),hm(t,e);let n=0;for(;ha(t);){if(n===NA)throw new S(103,!1);n++,hm(t,1)}}finally{N_(i)}}function PA(t,e,i,n){let r=e[ee];if((r&256)===256)return;let o=!1,s=!1;!o&&e[Zn].inlineEffectRunner?.flush(),sp(e);let a=null,l=null;!o&&LA(t)&&(l=AA(e),a=eh(l));try{Yy(e),SM(t.bindingStartIndex),i!==null&&iw(t,e,i,2,n);let c=(r&3)===3;if(!o)if(c){let f=t.preOrderCheckHooks;f!==null&&Fc(e,f,null)}else{let f=t.preOrderHooks;f!==null&&Pc(e,f,0,null),Ch(e,0)}if(s||jA(e),vw(e,0),t.contentQueries!==null&&lw(t,e),!o)if(c){let f=t.contentCheckHooks;f!==null&&Fc(e,f)}else{let f=t.contentHooks;f!==null&&Pc(e,f,1),Ch(e,1)}eA(t,e);let d=t.components;d!==null&&_w(e,d,0);let u=t.viewQuery;if(u!==null&&fm(2,u,n),!o)if(c){let f=t.viewCheckHooks;f!==null&&Fc(e,f)}else{let f=t.viewHooks;f!==null&&Pc(e,f,2),Ch(e,2)}if(t.firstUpdatePass===!0&&(t.firstUpdatePass=!1),e[Nc]){for(let f of e[Nc])f();e[Nc]=null}o||(e[ee]&=-73)}catch(c){throw o||xd(e),c}finally{l!==null&&(th(l,a),OA(l)),ap()}}function LA(t){return t.type!==2}function vw(t,e){for(let i=E0(t);i!==null;i=I0(i))for(let n=St;n-1&&(pa(e,n),Uc(i,n))}this._attachedToViewContainer=!1}Sd(this._lView[oe],this._lView)}onDestroy(e){Zy(this._lView,e)}markForCheck(){Ep(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[ee]&=-129}reattach(){Yh(this._lView),this._lView[ee]|=128}detectChanges(){this._lView[ee]|=1024,gw(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new S(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Gh(this._lView),i=this._lView[Lr];i!==null&&!e&&mp(i,this._lView),W0(this._lView[oe],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new S(902,!1);this._appRef=e;let i=Gh(this._lView),n=this._lView[Lr];n!==null&&!i&&G0(n,this._lView),Yh(this._lView)}},Ge=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=UA;let t=e;return t})(),BA=Ge,zA=class extends BA{constructor(e,i,n){super(),this._declarationLView=e,this._declarationTContainer=i,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,n){let r=Sa(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:i,dehydratedView:n});return new Hr(r)}};function UA(){return kd(vt(),se())}function kd(t,e){return t.type&4?new zA(e,t,Jo(t,e)):null}var fW=new RegExp(`^(\\d+)*(${aT}|${sT})*(.*)`);var HA=()=>null;function Zo(t,e){return HA(t,e)}var Qo=class{},yw=new D("",{providedIn:"root",factory:()=>!1});var ww=new D(""),mm=class{},Jc=class{};function $A(t){let e=Error(`No component factory found for ${zt(t)}.`);return e[WA]=t,e}var WA="ngComponent";var pm=class{resolveComponentFactory(e){throw $A(e)}},Fp=class Fp{};Fp.NULL=new pm;var In=Fp,Ji=class{},Yr=(()=>{let e=class e{constructor(){this.destroyNode=null}};e.__NG_ELEMENT_ID__=()=>GA();let t=e;return t})();function GA(){let t=se(),e=vt(),i=nr(e.index,t);return(Zi(i)?i:t)[Ze]}var qA=(()=>{let e=class e{};e.\u0275prov=C({token:e,providedIn:"root",factory:()=>null});let t=e;return t})(),Th={};var Z_=new Set;function Mn(t){Z_.has(t)||(Z_.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function xw(t){let e=!0;return setTimeout(()=>{e&&(e=!1,t())}),typeof Cn.requestAnimationFrame=="function"&&Cn.requestAnimationFrame(()=>{e&&(e=!1,t())}),()=>{e=!1}}function Q_(t){let e=!0;return queueMicrotask(()=>{e&&t()}),()=>{e=!1}}function K_(...t){}var A=class t{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:n=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new G(!1),this.onMicrotaskEmpty=new G(!1),this.onStable=new G(!1),this.onError=new G(!1),typeof Zone>"u")throw new S(908,!1);Zone.assertZonePatched();let r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!n&&i,r.shouldCoalesceRunChangeDetection=n,r.callbackScheduled=!1,QA(r)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!t.isInAngularZone())throw new S(909,!1)}static assertNotInAngularZone(){if(t.isInAngularZone())throw new S(909,!1)}run(e,i,n){return this._inner.run(e,i,n)}runTask(e,i,n,r){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,e,YA,K_,K_);try{return o.runTask(s,i,n)}finally{o.cancelTask(s)}}runGuarded(e,i,n){return this._inner.runGuarded(e,i,n)}runOutsideAngular(e){return this._outer.run(e)}},YA={};function Ip(t){if(t._nesting==0&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function ZA(t){t.isCheckStableRunning||t.callbackScheduled||(t.callbackScheduled=!0,Zone.root.run(()=>{xw(()=>{t.callbackScheduled=!1,gm(t),t.isCheckStableRunning=!0,Ip(t),t.isCheckStableRunning=!1})}),gm(t))}function QA(t){let e=()=>{ZA(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(i,n,r,o,s,a)=>{if(KA(a))return i.invokeTask(r,o,s,a);try{return X_(t),i.invokeTask(r,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&o.type==="eventTask"||t.shouldCoalesceRunChangeDetection)&&e(),J_(t)}},onInvoke:(i,n,r,o,s,a,l)=>{try{return X_(t),i.invoke(r,o,s,a,l)}finally{t.shouldCoalesceRunChangeDetection&&!t.callbackScheduled&&!XA(a)&&e(),J_(t)}},onHasTask:(i,n,r,o)=>{i.hasTask(r,o),n===r&&(o.change=="microTask"?(t._hasPendingMicrotasks=o.microTask,gm(t),Ip(t)):o.change=="macroTask"&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(i,n,r,o)=>(i.handleError(r,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}function gm(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&t.callbackScheduled===!0?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function X_(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function J_(t){t._nesting--,Ip(t)}var vm=class{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new G,this.onMicrotaskEmpty=new G,this.onStable=new G,this.onError=new G}run(e,i,n){return e.apply(i,n)}runGuarded(e,i,n){return e.apply(i,n)}runOutsideAngular(e){return e()}runTask(e,i,n,r){return e.apply(i,n)}};function KA(t){return Dw(t,"__ignore_ng_zone__")}function XA(t){return Dw(t,"__scheduler_tick__")}function Dw(t,e){return!Array.isArray(t)||t.length!==1?!1:t[0]?.data?.[e]===!0}var kr=function(t){return t[t.EarlyRead=0]="EarlyRead",t[t.Write=1]="Write",t[t.MixedReadWrite=2]="MixedReadWrite",t[t.Read=3]="Read",t}(kr||{}),Cw={destroy(){}};function Ta(t,e){!e&&Km(Ta);let i=e?.injector??y(me);if(!H0(i))return Cw;Mn("NgAfterRender");let n=i.get(Nd),r=n.handler??=new td,o=e?.phase??kr.MixedReadWrite,s=()=>{r.unregister(l),a()},a=i.get(Da).onDestroy(s),l=Yt(i,()=>new ed(o,t));return r.register(l),{destroy:s}}function cn(t,e){!e&&Km(cn);let i=e?.injector??y(me);if(!H0(i))return Cw;Mn("NgAfterNextRender");let n=i.get(Nd),r=n.handler??=new td,o=e?.phase??kr.MixedReadWrite,s=()=>{r.unregister(l),a()},a=i.get(Da).onDestroy(s),l=Yt(i,()=>new ed(o,()=>{s(),t()}));return r.register(l),{destroy:s}}var ed=class{constructor(e,i){this.phase=e,this.callbackFn=i,this.zone=y(A),this.errorHandler=y(Ot,{optional:!0}),y(Qo,{optional:!0})?.notify(6)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(e){this.errorHandler?.handleError(e)}}},td=class{constructor(){this.executingCallbacks=!1,this.buckets={[kr.EarlyRead]:new Set,[kr.Write]:new Set,[kr.MixedReadWrite]:new Set,[kr.Read]:new Set},this.deferredCallbacks=new Set}register(e){(this.executingCallbacks?this.deferredCallbacks:this.buckets[e.phase]).add(e)}unregister(e){this.buckets[e.phase].delete(e),this.deferredCallbacks.delete(e)}execute(){this.executingCallbacks=!0;for(let e of Object.values(this.buckets))for(let i of e)i.invoke();this.executingCallbacks=!1;for(let e of this.deferredCallbacks)this.buckets[e.phase].add(e);this.deferredCallbacks.clear()}destroy(){for(let e of Object.values(this.buckets))e.clear();this.deferredCallbacks.clear()}},Nd=(()=>{let e=class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}};e.\u0275prov=C({token:e,providedIn:"root",factory:()=>new e});let t=e;return t})();function nd(t,e,i){let n=i?t.styles:null,r=i?t.classes:null,o=0;if(e!==null)for(let s=0;s0&&X0(t,i,o.join(" "))}}function oR(t,e,i){let n=t.projection=[];for(let r=0;r{let e=class e{};e.__NG_ELEMENT_ID__=aR;let t=e;return t})();function aR(){let t=vt();return Iw(t,se())}var lR=Je,Ew=class extends lR{constructor(e,i,n){super(),this._lContainer=e,this._hostTNode=i,this._hostLView=n}get element(){return Jo(this._hostTNode,this._hostLView)}get injector(){return new Nr(this._hostTNode,this._hostLView)}get parentInjector(){let e=lp(this._hostTNode,this._hostLView);if(f0(e)){let i=Yc(e,this._hostLView),n=qc(e),r=i[oe].data[n+8];return new Nr(r,i)}else return new Nr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let i=ty(this._lContainer);return i!==null&&i[e]||null}get length(){return this._lContainer.length-St}createEmbeddedView(e,i,n){let r,o;typeof n=="number"?r=n:n!=null&&(r=n.index,o=n.injector);let s=Zo(this._lContainer,e.ssrId),a=e.createEmbeddedViewImpl(i||{},o,s);return this.insertImpl(a,r,Yo(this._hostTNode,s)),a}createComponent(e,i,n,r,o){let s=e&&!cM(e),a;if(s)a=i;else{let p=i||{};a=p.index,n=p.injector,r=p.projectableNodes,o=p.environmentInjector||p.ngModuleRef}let l=s?e:new ga(Pr(e)),c=n||this.parentInjector;if(!o&&l.ngModule==null){let _=(s?c:this.parentInjector).get(Mt,null);_&&(o=_)}let d=Pr(l.componentType??{}),u=Zo(this._lContainer,d?.id??null),f=u?.firstChild??null,m=l.create(c,r,f,o);return this.insertImpl(m.hostView,a,Yo(this._hostTNode,u)),m}insert(e,i){return this.insertImpl(e,i,!0)}insertImpl(e,i,n){let r=e._lView;if(gM(r)){let a=this.indexOf(e);if(a!==-1)this.detach(a);else{let l=r[Tt],c=new Ew(l,l[Ut],l[Tt]);c.detach(c.indexOf(e))}}let o=this._adjustIndex(i),s=this._lContainer;return Ma(s,r,o,n),e.attachToViewContainerRef(),xy(Ah(s),o,e),e}move(e,i){return this.insert(e,i)}indexOf(e){let i=ty(this._lContainer);return i!==null?i.indexOf(e):-1}remove(e){let i=this._adjustIndex(e,-1),n=pa(this._lContainer,i);n&&(Uc(Ah(this._lContainer),i),Sd(n[oe],n))}detach(e){let i=this._adjustIndex(e,-1),n=pa(this._lContainer,i);return n&&Uc(Ah(this._lContainer),i)!=null?new Hr(n):null}_adjustIndex(e,i=0){return e??this.length+i}};function ty(t){return t[Wc]}function Ah(t){return t[Wc]||(t[Wc]=[])}function Iw(t,e){let i,n=e[t.index];return yi(n)?i=n:(i=aw(n,e,null,t),e[t.index]=i,Od(e,i)),dR(i,e,t,n),new Ew(i,t,e)}function cR(t,e){let i=t[Ze],n=i.createComment(""),r=ln(e,t),o=pp(i,r);return Kc(i,o,n,GT(i,r),!1),n}var dR=hR,uR=()=>!1;function fR(t,e,i){return uR(t,e,i)}function hR(t,e,i,n){if(t[Vr])return;let r;i.type&8?r=Qn(n):r=cR(e,i),t[Vr]=r}var ym=class t{constructor(e){this.queryList=e,this.matches=null}clone(){return new t(this.queryList)}setDirty(){this.queryList.setDirty()}},wm=class t{constructor(e=[]){this.queries=e}createEmbeddedView(e){let i=e.queries;if(i!==null){let n=e.contentQueries!==null?e.contentQueries[0]:i.length,r=[];for(let o=0;o0)n.push(s[a/2]);else{let c=o[a+1],d=e[-l];for(let u=St;ue.trim())}function Tw(t,e,i){t.queries===null&&(t.queries=new xm),t.queries.track(new Dm(e,i))}function xR(t,e){let i=t.contentQueries||(t.contentQueries=[]),n=i.length?i[i.length-1]:-1;e!==n&&i.push(t.queries.length-1,e)}function Sp(t,e){return t.queries.getByIndex(e)}function DR(t,e){let i=t[oe],n=Sp(i,e);return n.crossesNgTemplate?Cm(i,t,e,[]):Sw(i,t,n,e)}function Fd(t){return typeof t=="function"&&t[$i]!==void 0}function Aa(t,e){Mn("NgSignals");let i=zb(t),n=i[$i];return e?.equal&&(n.equal=e.equal),i.set=r=>ih(n,r),i.update=r=>Ub(n,r),i.asReadonly=CR.bind(i),i}function CR(){let t=this[$i];if(t.readonlyFn===void 0){let e=()=>this();e[$i]=t,t.readonlyFn=e}return t.readonlyFn}function Aw(t){return Fd(t)&&typeof t.set=="function"}function ER(t){return Object.getPrototypeOf(t.prototype).constructor}function ve(t){let e=ER(t.type),i=!0,n=[t];for(;e;){let r;if(vi(t))r=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new S(903,!1);r=e.\u0275dir}if(r){if(i){n.push(r);let s=t;s.inputs=Rc(t.inputs),s.inputTransforms=Rc(t.inputTransforms),s.declaredInputs=Rc(t.declaredInputs),s.outputs=Rc(t.outputs);let a=r.hostBindings;a&&AR(t,a);let l=r.viewQuery,c=r.contentQueries;if(l&&MR(t,l),c&&TR(t,c),IR(t,r),fS(t.outputs,r.outputs),vi(r)&&r.data.animation){let d=t.data;d.animation=(d.animation||[]).concat(r.data.animation)}}let o=r.features;if(o)for(let s=0;s=0;n--){let r=t[n];r.hostVars=e+=r.hostVars,r.hostAttrs=da(r.hostAttrs,i=da(i,r.hostAttrs))}}function Rc(t){return t===pi?{}:t===Bt?[]:t}function MR(t,e){let i=t.viewQuery;i?t.viewQuery=(n,r)=>{e(n,r),i(n,r)}:t.viewQuery=e}function TR(t,e){let i=t.contentQueries;i?t.contentQueries=(n,r,o)=>{e(n,r,o),i(n,r,o)}:t.contentQueries=e}function AR(t,e){let i=t.hostBindings;i?t.hostBindings=(n,r)=>{e(n,r),i(n,r)}:t.hostBindings=e}function Rw(t){let e=i=>{let n=(Array.isArray(t)?t:t()).map(r=>typeof r=="function"?{directive:wt(r),inputs:pi,outputs:pi}:{directive:wt(r.directive),inputs:ny(r.inputs),outputs:ny(r.outputs)});i.hostDirectives===null?(i.findHostDirectiveDefs=Ow,i.hostDirectives=n):i.hostDirectives.unshift(...n)};return e.ngInherit=!0,e}function Ow(t,e,i){if(t.hostDirectives!==null)for(let n of t.hostDirectives){let r=Ym(n.directive);RR(r.declaredInputs,n.inputs),Ow(r,e,i),i.set(r,n),e.push(r)}}function ny(t){if(t===void 0||t.length===0)return pi;let e={};for(let i=0;ii()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}},Im=class extends va{constructor(e){super(),this.moduleType=e}create(e){return new Em(this.moduleType,e,[])}};var od=class extends er{constructor(e){super(),this.componentFactoryResolver=new id(this),this.instance=null;let i=new ua([...e.providers,{provide:er,useValue:this},{provide:In,useValue:this.componentFactoryResolver}],e.parent||Qm(),e.debugName,new Set(["environment"]));this.injector=i,e.runEnvironmentInitializers&&i.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Mp(t,e,i=null){return new od({providers:t,parent:e,debugName:i,runEnvironmentInitializers:!0}).injector}var Ci=(()=>{let e=class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new rt(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function kw(t){return kR(t)?Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t:!1}function OR(t,e){if(Array.isArray(t))for(let i=0;i>17&32767}function BR(t){return(t&2)==2}function zR(t,e){return t&131071|e<<17}function Sm(t){return t|2}function Ko(t){return(t&131068)>>2}function Rh(t,e){return t&-131069|e<<2}function UR(t){return(t&1)===1}function Mm(t){return t|1}function HR(t,e,i,n,r,o){let s=o?e.classBindings:e.styleBindings,a=$r(s),l=Ko(s);t[n]=i;let c=!1,d;if(Array.isArray(i)){let u=i;d=u[1],(d===null||wa(u,d)>0)&&(c=!0)}else d=i;if(r)if(l!==0){let f=$r(t[a+1]);t[n+1]=Oc(f,a),f!==0&&(t[f+1]=Rh(t[f+1],n)),t[a+1]=zR(t[a+1],n)}else t[n+1]=Oc(a,0),a!==0&&(t[a+1]=Rh(t[a+1],n)),a=n;else t[n+1]=Oc(l,0),a===0?a=n:t[l+1]=Rh(t[l+1],n),l=n;c&&(t[n+1]=Sm(t[n+1])),iy(t,d,n,!0),iy(t,d,n,!1),$R(e,d,t,n,o),s=Oc(a,l),o?e.classBindings=s:e.styleBindings=s}function $R(t,e,i,n,r){let o=r?t.residualClasses:t.residualStyles;o!=null&&typeof e=="string"&&wa(o,e)>=0&&(i[n+1]=Mm(i[n+1]))}function iy(t,e,i,n){let r=t[i+1],o=e===null,s=n?$r(r):Ko(r),a=!1;for(;s!==0&&(a===!1||o);){let l=t[s],c=t[s+1];WR(l,e)&&(a=!0,t[s+1]=n?Mm(c):Sm(c)),s=n?$r(c):Ko(c)}a&&(t[i+1]=n?Sm(r):Mm(r))}function WR(t,e){return t===null||e==null||(Array.isArray(t)?t[1]:t)===e?!0:Array.isArray(t)&&typeof e=="string"?wa(t,e)>=0:!1}var Dn={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function GR(t){return t.substring(Dn.key,Dn.keyEnd)}function qR(t){return YR(t),Pw(t,Lw(t,0,Dn.textEnd))}function Pw(t,e){let i=Dn.textEnd;return i===e?-1:(e=Dn.keyEnd=ZR(t,Dn.key=e,i),Lw(t,e,i))}function YR(t){Dn.key=0,Dn.keyEnd=0,Dn.value=0,Dn.valueEnd=0,Dn.textEnd=t.length}function Lw(t,e,i){for(;e32;)e++;return e}function U(t,e,i){let n=se(),r=ir();if(an(n,r,e)){let o=qe(),s=xa();Rd(o,s,n,t,e,n[Ze],i,!1)}return U}function Tm(t,e,i,n,r){let o=e.inputs,s=r?"class":"style";Dp(t,i,o[s],s,n)}function Zr(t,e,i){return Vw(t,e,i,!1),Zr}function xe(t,e){return Vw(t,e,null,!0),xe}function dn(t){Bw(tO,jw,t,!0)}function jw(t,e){for(let i=qR(e);i>=0;i=Pw(e,i))vd(t,GR(e),!0)}function Vw(t,e,i,n){let r=se(),o=qe(),s=n0(2);if(o.firstUpdatePass&&Uw(o,t,s,n),e!==Sn&&an(r,s,e)){let a=o.data[rr()];Hw(o,a,r,r[Ze],t,r[s+1]=iO(e,i),n,s)}}function Bw(t,e,i,n){let r=qe(),o=n0(2);r.firstUpdatePass&&Uw(r,null,o,n);let s=se();if(i!==Sn&&an(s,o,i)){let a=r.data[rr()];if($w(a,n)&&!zw(r,o)){let l=n?a.classesWithoutHost:a.stylesWithoutHost;l!==null&&(i=jh(l,i||"")),Tm(r,a,s,i,n)}else nO(r,a,s,s[Ze],s[o+1],s[o+1]=eO(t,e,i),n,o)}}function zw(t,e){return e>=t.expandoStartIndex}function Uw(t,e,i,n){let r=t.data;if(r[i+1]===null){let o=r[rr()],s=zw(t,i);$w(o,n)&&e===null&&!s&&(e=!1),e=QR(r,o,e,n),HR(r,o,e,i,s,n)}}function QR(t,e,i,n){let r=rp(t),o=n?e.residualClasses:e.residualStyles;if(r===null)(n?e.classBindings:e.styleBindings)===0&&(i=Oh(null,t,e,i,n),i=ba(i,e.attrs,n),o=null);else{let s=e.directiveStylingLast;if(s===-1||t[s]!==r)if(i=Oh(r,t,e,i,n),o===null){let l=KR(t,e,n);l!==void 0&&Array.isArray(l)&&(l=Oh(null,t,e,l[1],n),l=ba(l,e.attrs,n),XR(t,e,n,l))}else o=JR(t,e,n)}return o!==void 0&&(n?e.residualClasses=o:e.residualStyles=o),i}function KR(t,e,i){let n=i?e.classBindings:e.styleBindings;if(Ko(n)!==0)return t[$r(n)]}function XR(t,e,i,n){let r=i?e.classBindings:e.styleBindings;t[$r(r)]=n}function JR(t,e,i){let n,r=e.directiveEnd;for(let o=1+e.directiveStylingLast;o0;){let l=t[r],c=Array.isArray(l),d=c?l[1]:l,u=d===null,f=i[r+1];f===Sn&&(f=u?Bt:void 0);let m=u?xh(f,n):d===n?f:void 0;if(c&&!ad(m)&&(m=xh(l,n)),ad(m)&&(a=m,s))return a;let p=t[r+1];r=s?$r(p):Ko(p)}if(e!==null){let l=o?e.residualClasses:e.residualStyles;l!=null&&(a=xh(l,n))}return a}function ad(t){return t!==void 0}function iO(t,e){return t==null||t===""||(typeof e=="string"?t=t+e:typeof t=="object"&&(t=zt(Xn(t)))),t}function $w(t,e){return(t.flags&(e?8:16))!==0}function Ww(t,e,i){let n=se(),r=Fw(n,t,e,i);Bw(vd,jw,r,!0)}var Am=class{destroy(e){}updateValue(e,i){}swap(e,i){let n=Math.min(e,i),r=Math.max(e,i),o=this.detach(r);if(r-n>1){let s=this.detach(n);this.attach(n,o),this.attach(r,s)}else this.attach(n,o)}move(e,i){this.attach(i,this.detach(e))}};function kh(t,e,i,n,r){return t===i&&Object.is(e,n)?1:Object.is(r(t,e),r(i,n))?-1:0}function rO(t,e,i){let n,r,o=0,s=t.length-1,a=void 0;if(Array.isArray(e)){let l=e.length-1;for(;o<=s&&o<=l;){let c=t.at(o),d=e[o],u=kh(o,c,o,d,i);if(u!==0){u<0&&t.updateValue(o,d),o++;continue}let f=t.at(s),m=e[l],p=kh(s,f,l,m,i);if(p!==0){p<0&&t.updateValue(s,m),s--,l--;continue}let _=i(o,c),x=i(s,f),I=i(o,d);if(Object.is(I,x)){let V=i(l,m);Object.is(V,_)?(t.swap(o,s),t.updateValue(s,m),l--,s--):t.move(s,o),t.updateValue(o,d),o++;continue}if(n??=new ld,r??=sy(t,o,s,i),Rm(t,n,o,I))t.updateValue(o,d),o++,s++;else if(r.has(I))n.set(_,t.detach(o)),s--;else{let V=t.create(o,e[o]);t.attach(o,V),o++,s++}}for(;o<=l;)oy(t,n,i,o,e[o]),o++}else if(e!=null){let l=e[Symbol.iterator](),c=l.next();for(;!c.done&&o<=s;){let d=t.at(o),u=c.value,f=kh(o,d,o,u,i);if(f!==0)f<0&&t.updateValue(o,u),o++,c=l.next();else{n??=new ld,r??=sy(t,o,s,i);let m=i(o,u);if(Rm(t,n,o,m))t.updateValue(o,u),o++,s++,c=l.next();else if(!r.has(m))t.attach(o,t.create(o,u)),o++,s++,c=l.next();else{let p=i(o,d);n.set(p,t.detach(o)),s--}}}for(;!c.done;)oy(t,n,i,t.length,c.value),c=l.next()}for(;o<=s;)t.destroy(t.detach(s--));n?.forEach(l=>{t.destroy(l)})}function Rm(t,e,i,n){return e!==void 0&&e.has(n)?(t.attach(i,e.get(n)),e.delete(n),!0):!1}function oy(t,e,i,n,r){if(Rm(t,e,n,i(n,r)))t.updateValue(n,r);else{let o=t.create(n,r);t.attach(n,o)}}function sy(t,e,i,n){let r=new Set;for(let o=e;o<=i;o++)r.add(n(o,t.at(o)));return r}var ld=class{constructor(){this.kvMap=new Map,this._vMap=void 0}has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let i=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(i)?(this.kvMap.set(e,this._vMap.get(i)),this._vMap.delete(i)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,i){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,i)}else this.kvMap.set(e,i)}forEach(e){for(let[i,n]of this.kvMap)if(e(n,i),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,i)}}};function be(t,e){Mn("NgControlFlow");let i=se(),n=ir(),r=i[n]!==Sn?i[n]:-1,o=r!==-1?cd(i,xt+r):void 0,s=0;if(an(i,n,t)){let a=Ce(null);try{if(o!==void 0&&mw(o,s),t!==-1){let l=xt+t,c=cd(i,l),d=Fm(i[oe],l),u=Zo(c,d.tView.ssrId),f=Sa(i,d,e,{dehydratedView:u});Ma(c,f,s,Yo(d,u))}}finally{Ce(a)}}else if(o!==void 0){let a=hw(o,s);a!==void 0&&(a[It]=e)}}var Om=class{constructor(e,i,n){this.lContainer=e,this.$implicit=i,this.$index=n}get $count(){return this.lContainer.length-St}};function ts(t,e){return e}var km=class{constructor(e,i,n){this.hasEmptyBlock=e,this.trackByFn=i,this.liveCollection=n}};function ns(t,e,i,n,r,o,s,a,l,c,d,u,f){Mn("NgControlFlow");let m=se(),p=qe(),_=l!==void 0,x=se(),I=a?s.bind(x[qt][It]):s,V=new km(_,I);x[xt+t]=V,sd(m,p,t+1,e,i,n,r,Qi(p.consts,o)),_&&sd(m,p,t+2,l,c,d,u,Qi(p.consts,f))}var Nm=class extends Am{constructor(e,i,n){super(),this.lContainer=e,this.hostLView=i,this.templateTNode=n,this.operationsCounter=void 0,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-St}at(e){return this.getLView(e)[It].$implicit}attach(e,i){let n=i[Wo];this.needsIndexUpdate||=e!==this.length,Ma(this.lContainer,i,e,Yo(this.templateTNode,n))}detach(e){return this.needsIndexUpdate||=e!==this.length-1,oO(this.lContainer,e)}create(e,i){let n=Zo(this.lContainer,this.templateTNode.tView.ssrId),r=Sa(this.hostLView,this.templateTNode,new Om(this.lContainer,i,e),{dehydratedView:n});return this.operationsCounter?.recordCreate(),r}destroy(e){Sd(e[oe],e),this.operationsCounter?.recordDestroy()}updateValue(e,i){this.getLView(e)[It].$implicit=i}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e(Cd(!0),$0(n,r,NM()));function cO(t,e,i,n,r){let o=e.consts,s=Qi(o,n),a=es(e,t,8,"ng-container",s);s!==null&&nd(a,s,!0);let l=Qi(o,r);return xp(e,i,a,l),e.queries!==null&&e.queries.elementStart(e,a),a}function Nt(t,e,i){let n=se(),r=qe(),o=t+xt,s=r.firstCreatePass?cO(o,r,n,e,i):r.data[o];Gr(s,!0);let a=dO(r,n,s,t);return n[o]=a,Dd()&&Md(r,n,a,s),Xi(a,n),wd(s)&&(_p(r,n,s),bp(r,s,n)),i!=null&&yp(n,s),Nt}function Ft(){let t=vt(),e=qe();return np()?ip():(t=t.parent,Gr(t,!1)),e.firstCreatePass&&(Ed(e,t),Jm(t)&&e.queries.elementEnd(t)),Ft}function Pt(t,e,i){return Nt(t,e,i),Ft(),Pt}var dO=(t,e,i,n)=>(Cd(!0),LT(e[Ze],""));function lt(){return se()}function Jn(t,e,i){let n=se(),r=ir();if(an(n,r,e)){let o=qe(),s=xa();Rd(o,s,n,t,e,n[Ze],i,!0)}return Jn}function Tp(t,e,i){let n=se(),r=ir();if(an(n,r,e)){let o=qe(),s=xa(),a=rp(o.data),l=uw(a,s,n);Rd(o,s,n,t,e,l,i,!0)}return Tp}var Rr=void 0;function uO(t){let e=t,i=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return i===1&&n===0?1:5}var fO=["en",[["a","p"],["AM","PM"],Rr],[["AM","PM"],Rr,Rr],[["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"]],Rr,[["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"]],Rr,[["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}",Rr,"{1} 'at' {0}",Rr],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",uO],Nh={};function un(t){let e=hO(t),i=ay(e);if(i)return i;let n=e.split("-")[0];if(i=ay(n),i)return i;if(n==="en")return fO;throw new S(701,!1)}function ay(t){return t in Nh||(Nh[t]=Cn.ng&&Cn.ng.common&&Cn.ng.common.locales&&Cn.ng.common.locales[t]),Nh[t]}var ot=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}(ot||{});function hO(t){return t.toLowerCase().replace(/_/g,"-")}var dd="en-US";var mO=dd;function pO(t){typeof t=="string"&&(mO=t.toLowerCase().replace(/_/g,"-"))}var gO=(t,e,i)=>{};function z(t,e,i,n){let r=se(),o=qe(),s=vt();return Rp(o,r,r[Ze],s,t,e,n),z}function Ap(t,e){let i=vt(),n=se(),r=qe(),o=rp(r.data),s=uw(o,i,n);return Rp(r,n,s,i,t,e),Ap}function vO(t,e,i,n){let r=t.cleanup;if(r!=null)for(let o=0;ol?a[l]:null}typeof s=="string"&&(o+=2)}return null}function Rp(t,e,i,n,r,o,s){let a=wd(n),c=t.firstCreatePass&&dw(t),d=e[It],u=cw(e),f=!0;if(n.type&3||s){let _=ln(n,e),x=s?s(_):_,I=u.length,V=s?ne=>s(Qn(ne[n.index])):n.index,le=null;if(!s&&a&&(le=vO(t,e,r,n.index)),le!==null){let ne=le.__ngLastListenerFn__||le;ne.__ngNextListenerFn__=o,le.__ngLastListenerFn__=o,f=!1}else{o=cy(n,e,d,o),gO(_,r,o);let ne=i.listen(x,r,o);u.push(o,ne),c&&c.push(r,V,I,I+1)}}else o=cy(n,e,d,o);let m=n.outputs,p;if(f&&m!==null&&(p=m[r])){let _=p.length;if(_)for(let x=0;x<_;x+=2){let I=p[x],V=p[x+1],ut=e[I][V].subscribe(o),ke=u.length;u.push(o,ut),c&&c.push(r,n.index,ke,-(ke+1))}}}function ly(t,e,i,n){let r=Ce(null);try{return Gn(6,e,i),i(n)!==!1}catch(o){return fw(t,o),!1}finally{Gn(7,e,i),Ce(r)}}function cy(t,e,i,n){return function r(o){if(o===Function)return n;let s=t.componentOffset>-1?nr(t.index,e):e;Ep(s,5);let a=ly(e,i,n,o),l=r.__ngNextListenerFn__;for(;l;)a=ly(e,i,l,o)&&a,l=l.__ngNextListenerFn__;return a}}function $(t=1){return OM(t)}function bO(t,e){let i=null,n=US(t);for(let r=0;r=t.data.length&&(t.data[i]=null,t.blueprint[i]=null),e[i]=n}function Qr(t){let e=IM();return qy(e,xt+t)}function T(t,e=""){let i=se(),n=qe(),r=t+xt,o=n.firstCreatePass?es(n,r,1,e,null):n.data[r],s=wO(n,i,o,e,t);i[r]=s,Dd()&&Md(n,i,s,o),Gr(o,!1)}var wO=(t,e,i,n,r)=>(Cd(!0),FT(e[Ze],n));function At(t){return Le("",t,""),At}function Le(t,e,i){let n=se(),r=Fw(n,t,e,i);return r!==Sn&&EA(n,rr(),r),Le}function ei(t,e,i){Aw(e)&&(e=e());let n=se(),r=ir();if(an(n,r,e)){let o=qe(),s=xa();Rd(o,s,n,t,e,n[Ze],i,!1)}return ei}function Ei(t,e){let i=Aw(t);return i&&t.set(e),i}function ti(t,e){let i=se(),n=qe(),r=vt();return Rp(n,i,i[Ze],r,t,e),ti}function xO(t,e,i){let n=qe();if(n.firstCreatePass){let r=vi(t);Pm(i,n.data,n.blueprint,r,!0),Pm(e,n.data,n.blueprint,r,!1)}}function Pm(t,e,i,n,r){if(t=wt(t),Array.isArray(t))for(let o=0;o>20;if($o(t)||!t.multi){let m=new zr(c,r,h),p=Ph(l,e,r?d:d+f,u);p===-1?(Kh(Qc(a,s),o,l),Fh(o,t,e.length),e.push(l),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),i.push(m),s.push(m)):(i[p]=m,s[p]=m)}else{let m=Ph(l,e,d+f,u),p=Ph(l,e,d,d+f),_=m>=0&&i[m],x=p>=0&&i[p];if(r&&!x||!r&&!_){Kh(Qc(a,s),o,l);let I=EO(r?CO:DO,i.length,r,n,c);!r&&x&&(i[p].providerFactory=I),Fh(o,t,e.length,0),e.push(l),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),i.push(I),s.push(I)}else{let I=Gw(i[r?p:m],c,!r&&n);Fh(o,t,m>-1?m:p,I)}!r&&n&&x&&i[p].componentProviders++}}}function Fh(t,e,i,n){let r=$o(e),o=nM(e);if(r||o){let l=(o?wt(e.useClass):e).prototype.ngOnDestroy;if(l){let c=t.destroyHooks||(t.destroyHooks=[]);if(!r&&e.multi){let d=c.indexOf(i);d===-1?c.push(i,[n,l]):c[d+1].push(n,l)}else c.push(i,l)}}}function Gw(t,e,i){return i&&t.componentProviders++,t.multi.push(e)-1}function Ph(t,e,i,n){for(let r=i;r{i.providersResolver=(n,r)=>xO(n,r?r(t):t,e)}}var IO=(()=>{let e=class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=Fy(!1,n.type),o=r.length>0?Mp([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}};e.\u0275prov=C({token:e,providedIn:"environment",factory:()=>new e(g(Mt))});let t=e;return t})();function L(t){Mn("NgStandalone"),t.getStandaloneInjector=e=>e.get(IO).getOrCreateStandaloneInjector(t)}function qw(t,e,i){let n=t0()+t,r=se();return r[n]===Sn?Nw(r,n,i?e.call(i):e()):NR(r,n)}function SO(t,e){let i=t[e];return i===Sn?void 0:i}function MO(t,e,i,n,r,o,s){let a=e+i;return FR(t,a,r,o)?Nw(t,a+2,s?n.call(s,r,o):n(r,o)):SO(t,a+2)}function Yw(t,e){let i=qe(),n,r=t+xt;i.firstCreatePass?(n=TO(e,i.pipeRegistry),i.data[r]=n,n.onDestroy&&(i.destroyHooks??=[]).push(r,n.onDestroy)):n=i.data[r];let o=n.factory||(n.factory=Fr(n.type,!0)),s,a=Vt(h);try{let l=Zc(!1),c=o();return Zc(l),yO(i,se(),r,c),c}finally{Vt(a)}}function TO(t,e){if(e)for(let i=e.length-1;i>=0;i--){let n=e[i];if(t===n.name)return n}}function Zw(t,e,i,n){let r=t+xt,o=se(),s=qy(o,r);return AO(o,r)?MO(o,t0(),e,s.transform,i,n,s):s.transform(i,n)}function AO(t,e){return t[oe].data[e].pure}function Qw(t,e){return kd(t,e)}var Pd=(()=>{let e=class e{log(n){console.log(n)}warn(n){console.warn(n)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"platform"});let t=e;return t})();var Kw=new D("");function Kr(t){return!!t&&typeof t.then=="function"}function Xw(t){return!!t&&typeof t.subscribe=="function"}var Ld=new D(""),Jw=(()=>{let e=class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=y(Ld,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let s=o();if(Kr(s))n.push(s);else if(Xw(s)){let a=new Promise((l,c)=>{s.subscribe({complete:l,error:c})});n.push(a)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),jd=new D("");function RO(){Bb(()=>{throw new S(600,!1)})}function OO(t){return t.isBoundToModule}var kO=10;function NO(t,e,i){try{let n=i();return Kr(n)?n.catch(r=>{throw e.runOutsideAngular(()=>t.handleError(r)),r}):n}catch(n){throw e.runOutsideAngular(()=>t.handleError(n)),n}}var Zt=(()=>{let e=class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=y(x0),this.afterRenderEffectManager=y(Nd),this.zonelessEnabled=y(yw),this.externalTestViews=new Set,this.beforeRender=new M,this.afterTick=new M,this.componentTypes=[],this.components=[],this.isStable=y(Ci).hasPendingTasks.pipe(N(n=>!n)),this._injector=y(Mt)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,r){let o=n instanceof Jc;if(!this._injector.get(Jw).done){let m=!o&&Ry(n),p=!1;throw new S(405,p)}let a;o?a=n:a=this._injector.get(In).resolveComponentFactory(n),this.componentTypes.push(a.componentType);let l=OO(a)?void 0:this._injector.get(er),c=r||a.selector,d=a.create(me.NULL,[],c,l),u=d.location.nativeElement,f=d.injector.get(Kw,null);return f?.registerApplication(u),d.onDestroy(()=>{this.detachView(d.hostView),Lh(this.components,d),f?.unregisterApplication(u)}),this._loadComponent(d),d}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new S(101,!1);let r=Ce(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this._runningTick=!1,Ce(r),this.afterTick.next()}}detectChangesInAttachedViews(n){let r=null;this._injector.destroyed||(r=this._injector.get(Ji,null,{optional:!0}));let o=0,s=this.afterRenderEffectManager;for(;oha(l))&&(s.execute(),!this.allViews.some(({_lView:l})=>ha(l))))break}}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;Lh(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let r=this._injector.get(jd,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Lh(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new S(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Lh(t,e){let i=t.indexOf(e);i>-1&&t.splice(i,1)}function FO(t,e,i,n){if(!i&&!ha(t))return;gw(t,e,i&&!n?0:1)}var jm=class{constructor(e,i){this.ngModuleFactory=e,this.componentFactories=i}},Op=(()=>{let e=class e{compileModuleSync(n){return new Im(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o=Oy(n),s=U0(o.declarations).reduce((a,l)=>{let c=Pr(l);return c&&a.push(new ga(c)),a},[]);return new jm(r,s)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var PO=(()=>{let e=class e{constructor(){this.zone=y(A),this.changeDetectionScheduler=y(Qo),this.applicationRef=y(Zt)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function LO({ngZoneFactory:t,ignoreChangesOutsideZone:e}){return t??=()=>new A(VO()),[{provide:A,useFactory:t},{provide:Uo,multi:!0,useFactory:()=>{let i=y(PO,{optional:!0});return()=>i.initialize()}},{provide:Uo,multi:!0,useFactory:()=>{let i=y(BO);return()=>{i.initialize()}}},{provide:x0,useFactory:jO},e===!0?{provide:ww,useValue:!0}:[]]}function jO(){let t=y(A),e=y(Ot);return i=>t.runOutsideAngular(()=>e.handleError(i))}function VO(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}var BO=(()=>{let e=class e{constructor(){this.subscription=new ge,this.initialized=!1,this.zone=y(A),this.pendingTasks=y(Ci)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{A.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{A.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var zO=(()=>{let e=class e{constructor(){this.appRef=y(Zt),this.taskService=y(Ci),this.ngZone=y(A),this.zonelessEnabled=y(yw),this.disableScheduling=y(ww,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new ge,this.cancelScheduledCallback=null,this.shouldRefreshViews=!1,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof vm||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&n===5)return;switch(n){case 3:case 2:case 0:case 4:case 5:case 1:{this.shouldRefreshViews=!0;break}case 8:case 7:case 6:case 9:default:}if(!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?Q_:xw;this.pendingRenderTaskId=this.taskService.add(),this.zoneIsDefined?Zone.root.run(()=>{this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}):this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}shouldScheduleTick(){return!(this.disableScheduling||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&A.isInAngularZone())}tick(n){if(this.runningTick||this.appRef.destroyed)return;let r=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick(n)},void 0,this.schedulerTickApplyArgs)}catch(o){throw this.taskService.remove(r),o}finally{this.cleanup()}this.useMicrotaskScheduler=!0,Q_(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(r)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.shouldRefreshViews=!1,this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function UO(){return typeof $localize<"u"&&$localize.locale||dd}var Ra=new D("",{providedIn:"root",factory:()=>y(Ra,we.Optional|we.SkipSelf)||UO()});var ex=new D("");var Vc=null;function HO(t=[],e){return me.create({name:e,providers:[{provide:bd,useValue:"platform"},{provide:ex,useValue:new Set([()=>Vc=null])},...t]})}function $O(t=[]){if(Vc)return Vc;let e=HO(t);return Vc=e,RO(),WO(e),e}function WO(t){t.get(cp,null)?.forEach(i=>i())}function tx(){return!1}var Fe=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=GO;let t=e;return t})();function GO(t){return qO(vt(),se(),(t&16)===16)}function qO(t,e,i){if(yd(t)&&!i){let n=nr(t.index,e);return new Hr(n,n)}else if(t.type&47){let n=e[qt];return new Hr(n,e)}return null}var Vm=class{constructor(){}supports(e){return kw(e)}create(e){return new Bm(e)}},YO=(t,e)=>e,Bm=class{constructor(e){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=e||YO}forEachItem(e){let i;for(i=this._itHead;i!==null;i=i._next)e(i)}forEachOperation(e){let i=this._itHead,n=this._removalsHead,r=0,o=null;for(;i||n;){let s=!n||i&&i.currentIndex{s=this._trackByFn(r,a),i===null||!Object.is(i.trackById,s)?(i=this._mismatch(i,a,s,r),n=!0):(n&&(i=this._verifyReinsertion(i,a,s,r)),Object.is(i.item,a)||this._addIdentityChange(i,a)),i=i._next,r++}),this.length=r;return this._truncate(i),this.collection=e,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let e;for(e=this._previousItHead=this._itHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;e!==null;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;e!==null;e=e._nextMoved)e.previousIndex=e.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(e,i,n,r){let o;return e===null?o=this._itTail:(o=e._prev,this._remove(e)),e=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null),e!==null?(Object.is(e.item,i)||this._addIdentityChange(e,i),this._reinsertAfter(e,o,r)):(e=this._linkedRecords===null?null:this._linkedRecords.get(n,r),e!==null?(Object.is(e.item,i)||this._addIdentityChange(e,i),this._moveAfter(e,o,r)):e=this._addAfter(new zm(i,n),o,r)),e}_verifyReinsertion(e,i,n,r){let o=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null);return o!==null?e=this._reinsertAfter(o,e._prev,r):e.currentIndex!=r&&(e.currentIndex=r,this._addToMoves(e,r)),e}_truncate(e){for(;e!==null;){let i=e._next;this._addToRemovals(this._unlink(e)),e=i}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(e,i,n){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(e);let r=e._prevRemoved,o=e._nextRemoved;return r===null?this._removalsHead=o:r._nextRemoved=o,o===null?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(e,i,n),this._addToMoves(e,n),e}_moveAfter(e,i,n){return this._unlink(e),this._insertAfter(e,i,n),this._addToMoves(e,n),e}_addAfter(e,i,n){return this._insertAfter(e,i,n),this._additionsTail===null?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,i,n){let r=i===null?this._itHead:i._next;return e._next=r,e._prev=i,r===null?this._itTail=e:r._prev=e,i===null?this._itHead=e:i._next=e,this._linkedRecords===null&&(this._linkedRecords=new ud),this._linkedRecords.put(e),e.currentIndex=n,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){this._linkedRecords!==null&&this._linkedRecords.remove(e);let i=e._prev,n=e._next;return i===null?this._itHead=n:i._next=n,n===null?this._itTail=i:n._prev=i,e}_addToMoves(e,i){return e.previousIndex===i||(this._movesTail===null?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return this._unlinkedRecords===null&&(this._unlinkedRecords=new ud),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e}_addIdentityChange(e,i){return e.item=i,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}},zm=class{constructor(e,i){this.item=e,this.trackById=i,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}},Um=class{constructor(){this._head=null,this._tail=null}add(e){this._head===null?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)}get(e,i){let n;for(n=this._head;n!==null;n=n._nextDup)if((i===null||i<=n.currentIndex)&&Object.is(n.trackById,e))return n;return null}remove(e){let i=e._prevDup,n=e._nextDup;return i===null?this._head=n:i._nextDup=n,n===null?this._tail=i:n._prevDup=i,this._head===null}},ud=class{constructor(){this.map=new Map}put(e){let i=e.trackById,n=this.map.get(i);n||(n=new Um,this.map.set(i,n)),n.add(e)}get(e,i){let n=e,r=this.map.get(n);return r?r.get(e,i):null}remove(e){let i=e.trackById;return this.map.get(i).remove(e)&&this.map.delete(i),e}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function dy(t,e,i){let n=t.previousIndex;if(n===null)return n;let r=0;return i&&n{let e=class e{constructor(n){this.factories=n}static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||uy()),deps:[[e,new gd,new ya]]}}find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return r;throw new S(901,!1)}};e.\u0275prov=C({token:e,providedIn:"root",factory:uy});let t=e;return t})();function nx(t){try{let{rootComponent:e,appProviders:i,platformProviders:n}=t,r=$O(n),o=[LO({}),{provide:Qo,useExisting:zO},...i||[]],a=new od({providers:o,parent:r,debugName:"",runEnvironmentInitializers:!1}).injector,l=a.get(A);return l.run(()=>{a.resolveInjectorInitializers();let c=a.get(Ot,null),d;l.runOutsideAngular(()=>{d=l.onError.subscribe({next:m=>{c.handleError(m)}})});let u=()=>a.destroy(),f=r.get(ex);return f.add(u),a.onDestroy(()=>{d.unsubscribe(),f.delete(u)}),NO(c,l,()=>{let m=a.get(Jw);return m.runInitializers(),m.donePromise.then(()=>{let p=a.get(Ra,dd);pO(p||dd);let _=a.get(Zt);return e!==void 0&&_.bootstrap(e),_})})})}catch(e){return Promise.reject(e)}}function te(t){return typeof t=="boolean"?t:t!=null&&t!=="false"}function ni(t,e=NaN){return!isNaN(parseFloat(t))&&!isNaN(Number(t))?Number(t):e}function kp(t){let e=Ce(null);try{return t()}finally{Ce(e)}}var ZO=new D("",{providedIn:"root",factory:()=>y(QO)}),QO=(()=>{let e=class e{};e.\u0275prov=C({token:e,providedIn:"root",factory:()=>new Hm});let t=e;return t})(),Hm=class{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=y(Ci),this.taskId=null}scheduleEffect(e){if(this.enqueue(e),this.taskId===null){let i=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(i),this.taskId=null})}}enqueue(e){let i=e.creationZone;this.queues.has(i)||this.queues.set(i,new Set);let n=this.queues.get(i);n.has(e)||(this.queuedEffectCount++,n.add(e))}flush(){for(;this.queuedEffectCount>0;)for(let[e,i]of this.queues)e===null?this.flushQueue(i):e.run(()=>this.flushQueue(i))}flushQueue(e){for(let i of e)e.delete(i),this.queuedEffectCount--,i.run()}},$m=class{constructor(e,i,n,r,o,s){this.scheduler=e,this.effectFn=i,this.creationZone=n,this.injector=o,this.watcher=$b(a=>this.runEffect(a),()=>this.schedule(),s),this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}runEffect(e){try{this.effectFn(e)}catch(i){this.injector.get(Ot,null,{optional:!0})?.handleError(i)}}run(){this.watcher.run()}schedule(){this.scheduler.scheduleEffect(this)}destroy(){this.watcher.destroy(),this.unregisterOnDestroy?.()}};function Np(t,e){Mn("NgSignals"),!e?.injector&&Km(Np);let i=e?.injector??y(me),n=e?.manualCleanup!==!0?i.get(Da):null,r=new $m(i.get(ZO),t,typeof Zone>"u"?null:Zone.current,n,i,e?.allowSignalWrites??!1),o=i.get(Fe,null,{optional:!0});return!o||!(o._lView[ee]&8)?r.watcher.notify():(o._lView[Nc]??=[]).push(r.watcher.notify),r}var ax=null;function Ti(){return ax}function lx(t){ax??=t}var qd=class{};var j=new D(""),cx=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(KO),providedIn:"platform"});let t=e;return t})();var KO=(()=>{let e=class e extends cx{constructor(){super(),this._doc=y(j),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Ti().getBaseHref(this._doc)}onPopState(n){let r=Ti().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){let r=Ti().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}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(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>new e,providedIn:"platform"});let t=e;return t})();function dx(t,e){if(t.length==0)return e;if(e.length==0)return t;let i=0;return t.endsWith("/")&&i++,e.startsWith("/")&&i++,i==2?t+e.substring(1):i==1?t+e:t+"/"+e}function ix(t){let e=t.match(/#|\?|$/),i=e&&e.index||t.length,n=i-(t[i-1]==="/"?1:0);return t.slice(0,n)+t.slice(i)}function Xr(t){return t&&t[0]!=="?"?"?"+t:t}var Qd=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(ux),providedIn:"root"});let t=e;return t})(),XO=new D(""),ux=(()=>{let e=class e extends Qd{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??y(j).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return dx(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+Xr(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,s){let a=this.prepareExternalUrl(o+Xr(s));this._platformLocation.pushState(n,r,a)}replaceState(n,r,o,s){let a=this.prepareExternalUrl(o+Xr(s));this._platformLocation.replaceState(n,r,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}};e.\u0275fac=function(r){return new(r||e)(g(cx),g(XO,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var Ai=(()=>{let e=class e{constructor(n){this._subject=new G,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=tk(ix(rx(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Xr(r))}normalize(n){return e.stripTrailingSlash(ek(this._basePath,rx(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Xr(r)),o)}replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Xr(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r,complete:o})}};e.normalizeQueryParams=Xr,e.joinWithSlash=dx,e.stripTrailingSlash=ix,e.\u0275fac=function(r){return new(r||e)(g(Qd))},e.\u0275prov=C({token:e,factory:()=>JO(),providedIn:"root"});let t=e;return t})();function JO(){return new Ai(g(Qd))}function ek(t,e){if(!t||!e.startsWith(t))return e;let i=e.substring(t.length);return i===""||["/",";","?","#"].includes(i[0])?i:e}function rx(t){return t.replace(/\/index.html$/,"")}function tk(t){if(new RegExp("^(https?:)?//").test(t)){let[,i]=t.split(/\/\/[^\/]+/);return i}return t}var Lt=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(Lt||{}),Ue=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(Ue||{}),Qt=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(Qt||{}),or={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function nk(t){return un(t)[ot.LocaleId]}function ik(t,e,i){let n=un(t),r=[n[ot.DayPeriodsFormat],n[ot.DayPeriodsStandalone]],o=fn(r,e);return fn(o,i)}function rk(t,e,i){let n=un(t),r=[n[ot.DaysFormat],n[ot.DaysStandalone]],o=fn(r,e);return fn(o,i)}function ok(t,e,i){let n=un(t),r=[n[ot.MonthsFormat],n[ot.MonthsStandalone]],o=fn(r,e);return fn(o,i)}function sk(t,e){let n=un(t)[ot.Eras];return fn(n,e)}function Vd(t,e){let i=un(t);return fn(i[ot.DateFormat],e)}function Bd(t,e){let i=un(t);return fn(i[ot.TimeFormat],e)}function zd(t,e){let n=un(t)[ot.DateTimeFormat];return fn(n,e)}function Kd(t,e){let i=un(t),n=i[ot.NumberSymbols][e];if(typeof n>"u"){if(e===or.CurrencyDecimal)return i[ot.NumberSymbols][or.Decimal];if(e===or.CurrencyGroup)return i[ot.NumberSymbols][or.Group]}return n}function fx(t){if(!t[ot.ExtraData])throw new Error(`Missing extra locale data for the locale "${t[ot.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function ak(t){let e=un(t);return fx(e),(e[ot.ExtraData][2]||[]).map(n=>typeof n=="string"?Pp(n):[Pp(n[0]),Pp(n[1])])}function lk(t,e,i){let n=un(t);fx(n);let r=[n[ot.ExtraData][0],n[ot.ExtraData][1]],o=fn(r,e)||[];return fn(o,i)||[]}function fn(t,e){for(let i=e;i>-1;i--)if(typeof t[i]<"u")return t[i];throw new Error("Locale data API: locale data undefined")}function Pp(t){let[e,i]=t.split(":");return{hours:+e,minutes:+i}}var ck=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Ud={},dk=/((?:[^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]*)/,Mi=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}(Mi||{}),Oe=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}(Oe||{}),Re=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}(Re||{});function uk(t,e,i,n){let r=yk(t);e=Si(i,e)||e;let s=[],a;for(;e;)if(a=dk.exec(e),a){s=s.concat(a.slice(1));let d=s.pop();if(!d)break;e=d}else{s.push(e);break}let l=r.getTimezoneOffset();n&&(l=mx(n,l),r=_k(r,n,!0));let c="";return s.forEach(d=>{let u=vk(d);c+=u?u(r,i,l):d==="''"?"'":d.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function Yd(t,e,i){let n=new Date(0);return n.setFullYear(t,e,i),n.setHours(0,0,0),n}function Si(t,e){let i=nk(t);if(Ud[i]??={},Ud[i][e])return Ud[i][e];let n="";switch(e){case"shortDate":n=Vd(t,Qt.Short);break;case"mediumDate":n=Vd(t,Qt.Medium);break;case"longDate":n=Vd(t,Qt.Long);break;case"fullDate":n=Vd(t,Qt.Full);break;case"shortTime":n=Bd(t,Qt.Short);break;case"mediumTime":n=Bd(t,Qt.Medium);break;case"longTime":n=Bd(t,Qt.Long);break;case"fullTime":n=Bd(t,Qt.Full);break;case"short":let r=Si(t,"shortTime"),o=Si(t,"shortDate");n=Hd(zd(t,Qt.Short),[r,o]);break;case"medium":let s=Si(t,"mediumTime"),a=Si(t,"mediumDate");n=Hd(zd(t,Qt.Medium),[s,a]);break;case"long":let l=Si(t,"longTime"),c=Si(t,"longDate");n=Hd(zd(t,Qt.Long),[l,c]);break;case"full":let d=Si(t,"fullTime"),u=Si(t,"fullDate");n=Hd(zd(t,Qt.Full),[d,u]);break}return n&&(Ud[i][e]=n),n}function Hd(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(i,n){return e!=null&&n in e?e[n]:i})),t}function Tn(t,e,i="-",n,r){let o="";(t<0||r&&t<=0)&&(r?t=-t+1:(t=-t,o=i));let s=String(t);for(;s.length0||a>-i)&&(a+=i),t===Oe.Hours)a===0&&i===-12&&(a=12);else if(t===Oe.FractionalSeconds)return fk(a,e);let l=Kd(s,or.MinusSign);return Tn(a,e,l,n,r)}}function hk(t,e){switch(t){case Oe.FullYear:return e.getFullYear();case Oe.Month:return e.getMonth();case Oe.Date:return e.getDate();case Oe.Hours:return e.getHours();case Oe.Minutes:return e.getMinutes();case Oe.Seconds:return e.getSeconds();case Oe.FractionalSeconds:return e.getMilliseconds();case Oe.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}function He(t,e,i=Lt.Format,n=!1){return function(r,o){return mk(r,o,t,e,i,n)}}function mk(t,e,i,n,r,o){switch(i){case Re.Months:return ok(e,r,n)[t.getMonth()];case Re.Days:return rk(e,r,n)[t.getDay()];case Re.DayPeriods:let s=t.getHours(),a=t.getMinutes();if(o){let c=ak(e),d=lk(e,r,n),u=c.findIndex(f=>{if(Array.isArray(f)){let[m,p]=f,_=s>=m.hours&&a>=m.minutes,x=s0?Math.floor(r/60):Math.ceil(r/60);switch(t){case Mi.Short:return(r>=0?"+":"")+Tn(s,2,o)+Tn(Math.abs(r%60),2,o);case Mi.ShortGMT:return"GMT"+(r>=0?"+":"")+Tn(s,1,o);case Mi.Long:return"GMT"+(r>=0?"+":"")+Tn(s,2,o)+":"+Tn(Math.abs(r%60),2,o);case Mi.Extended:return n===0?"Z":(r>=0?"+":"")+Tn(s,2,o)+":"+Tn(Math.abs(r%60),2,o);default:throw new Error(`Unknown zone width "${t}"`)}}}var pk=0,Gd=4;function gk(t){let e=Yd(t,pk,1).getDay();return Yd(t,0,1+(e<=Gd?Gd:Gd+7)-e)}function hx(t){let e=t.getDay(),i=e===0?-3:Gd-e;return Yd(t.getFullYear(),t.getMonth(),t.getDate()+i)}function Lp(t,e=!1){return function(i,n){let r;if(e){let o=new Date(i.getFullYear(),i.getMonth(),1).getDay()-1,s=i.getDate();r=1+Math.floor((s+o)/7)}else{let o=hx(i),s=gk(o.getFullYear()),a=o.getTime()-s.getTime();r=1+Math.round(a/6048e5)}return Tn(r,t,Kd(n,or.MinusSign))}}function Wd(t,e=!1){return function(i,n){let o=hx(i).getFullYear();return Tn(o,t,Kd(n,or.MinusSign),e)}}var jp={};function vk(t){if(jp[t])return jp[t];let e;switch(t){case"G":case"GG":case"GGG":e=He(Re.Eras,Ue.Abbreviated);break;case"GGGG":e=He(Re.Eras,Ue.Wide);break;case"GGGGG":e=He(Re.Eras,Ue.Narrow);break;case"y":e=ct(Oe.FullYear,1,0,!1,!0);break;case"yy":e=ct(Oe.FullYear,2,0,!0,!0);break;case"yyy":e=ct(Oe.FullYear,3,0,!1,!0);break;case"yyyy":e=ct(Oe.FullYear,4,0,!1,!0);break;case"Y":e=Wd(1);break;case"YY":e=Wd(2,!0);break;case"YYY":e=Wd(3);break;case"YYYY":e=Wd(4);break;case"M":case"L":e=ct(Oe.Month,1,1);break;case"MM":case"LL":e=ct(Oe.Month,2,1);break;case"MMM":e=He(Re.Months,Ue.Abbreviated);break;case"MMMM":e=He(Re.Months,Ue.Wide);break;case"MMMMM":e=He(Re.Months,Ue.Narrow);break;case"LLL":e=He(Re.Months,Ue.Abbreviated,Lt.Standalone);break;case"LLLL":e=He(Re.Months,Ue.Wide,Lt.Standalone);break;case"LLLLL":e=He(Re.Months,Ue.Narrow,Lt.Standalone);break;case"w":e=Lp(1);break;case"ww":e=Lp(2);break;case"W":e=Lp(1,!0);break;case"d":e=ct(Oe.Date,1);break;case"dd":e=ct(Oe.Date,2);break;case"c":case"cc":e=ct(Oe.Day,1);break;case"ccc":e=He(Re.Days,Ue.Abbreviated,Lt.Standalone);break;case"cccc":e=He(Re.Days,Ue.Wide,Lt.Standalone);break;case"ccccc":e=He(Re.Days,Ue.Narrow,Lt.Standalone);break;case"cccccc":e=He(Re.Days,Ue.Short,Lt.Standalone);break;case"E":case"EE":case"EEE":e=He(Re.Days,Ue.Abbreviated);break;case"EEEE":e=He(Re.Days,Ue.Wide);break;case"EEEEE":e=He(Re.Days,Ue.Narrow);break;case"EEEEEE":e=He(Re.Days,Ue.Short);break;case"a":case"aa":case"aaa":e=He(Re.DayPeriods,Ue.Abbreviated);break;case"aaaa":e=He(Re.DayPeriods,Ue.Wide);break;case"aaaaa":e=He(Re.DayPeriods,Ue.Narrow);break;case"b":case"bb":case"bbb":e=He(Re.DayPeriods,Ue.Abbreviated,Lt.Standalone,!0);break;case"bbbb":e=He(Re.DayPeriods,Ue.Wide,Lt.Standalone,!0);break;case"bbbbb":e=He(Re.DayPeriods,Ue.Narrow,Lt.Standalone,!0);break;case"B":case"BB":case"BBB":e=He(Re.DayPeriods,Ue.Abbreviated,Lt.Format,!0);break;case"BBBB":e=He(Re.DayPeriods,Ue.Wide,Lt.Format,!0);break;case"BBBBB":e=He(Re.DayPeriods,Ue.Narrow,Lt.Format,!0);break;case"h":e=ct(Oe.Hours,1,-12);break;case"hh":e=ct(Oe.Hours,2,-12);break;case"H":e=ct(Oe.Hours,1);break;case"HH":e=ct(Oe.Hours,2);break;case"m":e=ct(Oe.Minutes,1);break;case"mm":e=ct(Oe.Minutes,2);break;case"s":e=ct(Oe.Seconds,1);break;case"ss":e=ct(Oe.Seconds,2);break;case"S":e=ct(Oe.FractionalSeconds,1);break;case"SS":e=ct(Oe.FractionalSeconds,2);break;case"SSS":e=ct(Oe.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=$d(Mi.Short);break;case"ZZZZZ":e=$d(Mi.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=$d(Mi.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=$d(Mi.Long);break;default:return null}return jp[t]=e,e}function mx(t,e){t=t.replace(/:/g,"");let i=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(i)?e:i}function bk(t,e){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+e),t}function _k(t,e,i){let n=i?-1:1,r=t.getTimezoneOffset(),o=mx(e,r);return bk(t,n*(o-r))}function yk(t){if(ox(t))return t;if(typeof t=="number"&&!isNaN(t))return new Date(t);if(typeof t=="string"){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){let[r,o=1,s=1]=t.split("-").map(a=>+a);return Yd(r,o-1,s)}let i=parseFloat(t);if(!isNaN(t-i))return new Date(i);let n;if(n=t.match(ck))return wk(n)}let e=new Date(t);if(!ox(e))throw new Error(`Unable to convert "${t}" into a date`);return e}function wk(t){let e=new Date(0),i=0,n=0,r=t[8]?e.setUTCFullYear:e.setFullYear,o=t[8]?e.setUTCHours:e.setHours;t[9]&&(i=Number(t[9]+t[10]),n=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));let s=Number(t[4]||0)-i,a=Number(t[5]||0)-n,l=Number(t[6]||0),c=Math.floor(parseFloat("0."+(t[7]||0))*1e3);return o.call(e,s,a,l,c),e}function ox(t){return t instanceof Date&&!isNaN(t.valueOf())}function Xd(t,e){e=encodeURIComponent(e);for(let i of t.split(";")){let n=i.indexOf("="),[r,o]=n==-1?[i,""]:[i.slice(0,n),i.slice(n+1)];if(r.trim()===e)return decodeURIComponent(o)}return null}var Vp=/\s+/,sx=[],Jd=(()=>{let e=class e{constructor(n,r){this._ngEl=n,this._renderer=r,this.initialClasses=sx,this.stateMap=new Map}set klass(n){this.initialClasses=n!=null?n.trim().split(Vp):sx}set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(Vp):n}ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);let n=this.rawClass;if(Array.isArray(n)||n instanceof Set)for(let r of n)this._updateState(r,!0);else if(n!=null)for(let r of Object.keys(n))this._updateState(r,!!n[r]);this._applyStateDiff()}_updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r&&(o.changed=!0,o.enabled=r),o.touched=!0):this.stateMap.set(n,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.changed?(this._toggleClass(r,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),o.touched=!1}}_toggleClass(n,r){n=n.trim(),n.length>0&&n.split(Vp).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Yr))},e.\u0275dir=R({type:e,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"},standalone:!0});let t=e;return t})();var px=(()=>{let e=class e{constructor(n){this._viewContainerRef=n,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContainerRef;if(this._viewRef&&r.remove(r.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=r.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,r,o):!1,get:(n,r,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,r,o)}})}};e.\u0275fac=function(r){return new(r||e)(h(Je))},e.\u0275dir=R({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[Xe]});let t=e;return t})();function xk(t,e){return new S(2100,!1)}var Dk="mediumDate",Ck=new D(""),Ek=new D(""),gx=(()=>{let e=class e{constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOptions=o}transform(n,r,o,s){if(n==null||n===""||n!==n)return null;try{let a=r??this.defaultOptions?.dateFormat??Dk,l=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return uk(n,a,s||this.locale,l)}catch(a){throw xk(e,a.message)}}};e.\u0275fac=function(r){return new(r||e)(h(Ra,16),h(Ck,24),h(Ek,24))},e.\u0275pipe=Ty({name:"date",type:e,pure:!0,standalone:!0});let t=e;return t})();var tt=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({});let t=e;return t})(),Bp="browser",Ik="server";function Oa(t){return t===Bp}function eu(t){return t===Ik}var rs=class{};var Na=class{},iu=class{},Ri=class t{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(` +`).forEach(i=>{let n=i.indexOf(":");if(n>0){let r=i.slice(0,n),o=r.toLowerCase(),s=i.slice(n+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((i,n)=>{this.setHeaderEntries(n,i)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([i,n])=>{this.setHeaderEntries(i,n)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let i=this.headers.get(e.toLowerCase());return i&&i.length>0?i[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,i){return this.clone({name:e,value:i,op:"a"})}set(e,i){return this.clone({name:e,value:i,op:"s"})}delete(e,i){return this.clone({name:e,value:i,op:"d"})}maybeSetNormalizedName(e,i){this.normalizedNames.has(i)||this.normalizedNames.set(i,e)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(i=>{this.headers.set(i,e.headers.get(i)),this.normalizedNames.set(i,e.normalizedNames.get(i))})}clone(e){let i=new t;return i.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,i.lazyUpdate=(this.lazyUpdate||[]).concat([e]),i}applyUpdate(e){let i=e.name.toLowerCase();switch(e.op){case"a":case"s":let n=e.value;if(typeof n=="string"&&(n=[n]),n.length===0)return;this.maybeSetNormalizedName(e.name,i);let r=(e.op==="a"?this.headers.get(i):void 0)||[];r.push(...n),this.headers.set(i,r);break;case"d":let o=e.value;if(!o)this.headers.delete(i),this.normalizedNames.delete(i);else{let s=this.headers.get(i);if(!s)return;s=s.filter(a=>o.indexOf(a)===-1),s.length===0?(this.headers.delete(i),this.normalizedNames.delete(i)):this.headers.set(i,s)}break}}setHeaderEntries(e,i){let n=(Array.isArray(i)?i:[i]).map(o=>o.toString()),r=e.toLowerCase();this.headers.set(r,n),this.maybeSetNormalizedName(e,r)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(i=>e(this.normalizedNames.get(i),this.headers.get(i)))}};var Up=class{encodeKey(e){return vx(e)}encodeValue(e){return vx(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function Sk(t,e){let i=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{let o=r.indexOf("="),[s,a]=o==-1?[e.decodeKey(r),""]:[e.decodeKey(r.slice(0,o)),e.decodeValue(r.slice(o+1))],l=i.get(s)||[];l.push(a),i.set(s,l)}),i}var Mk=/%(\d[a-f0-9])/gi,Tk={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function vx(t){return encodeURIComponent(t).replace(Mk,(e,i)=>Tk[i]??e)}function nu(t){return`${t}`}var ar=class t{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new Up,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=Sk(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(i=>{let n=e.fromObject[i],r=Array.isArray(n)?n.map(nu):[nu(n)];this.map.set(i,r)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let i=this.map.get(e);return i?i[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,i){return this.clone({param:e,value:i,op:"a"})}appendAll(e){let i=[];return Object.keys(e).forEach(n=>{let r=e[n];Array.isArray(r)?r.forEach(o=>{i.push({param:n,value:o,op:"a"})}):i.push({param:n,value:r,op:"a"})}),this.clone(i)}set(e,i){return this.clone({param:e,value:i,op:"s"})}delete(e,i){return this.clone({param:e,value:i,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let i=this.encoder.encodeKey(e);return this.map.get(e).map(n=>i+"="+this.encoder.encodeValue(n)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let i=new t({encoder:this.encoder});return i.cloneFrom=this.cloneFrom||this,i.updates=(this.updates||[]).concat(e),i}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let i=(e.op==="a"?this.map.get(e.param):void 0)||[];i.push(nu(e.value)),this.map.set(e.param,i);break;case"d":if(e.value!==void 0){let n=this.map.get(e.param)||[],r=n.indexOf(nu(e.value));r!==-1&&n.splice(r,1),n.length>0?this.map.set(e.param,n):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var Hp=class{constructor(){this.map=new Map}set(e,i){return this.map.set(e,i),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function Ak(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function bx(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function _x(t){return typeof Blob<"u"&&t instanceof Blob}function yx(t){return typeof FormData<"u"&&t instanceof FormData}function Rk(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var ka=class t{constructor(e,i,n,r){this.url=i,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase();let o;if(Ak(this.method)||r?(this.body=n!==void 0?n:null,o=r):o=n,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new Ri,this.context??=new Hp,!this.params)this.params=new ar,this.urlWithParams=i;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=i;else{let a=i.indexOf("?"),l=a===-1?"?":af.set(m,e.setHeaders[m]),c)),e.setParams&&(d=Object.keys(e.setParams).reduce((f,m)=>f.set(m,e.setParams[m]),d)),new t(i,n,s,{params:d,headers:c,context:u,reportProgress:l,responseType:r,withCredentials:a,transferCache:o})}},lr=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(lr||{}),Fa=class{constructor(e,i=200,n="OK"){this.headers=e.headers||new Ri,this.status=e.status!==void 0?e.status:i,this.statusText=e.statusText||n,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},ru=class t extends Fa{constructor(e={}){super(e),this.type=lr.ResponseHeader}clone(e={}){return new t({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Jr=class t extends Fa{constructor(e={}){super(e),this.type=lr.Response,this.body=e.body!==void 0?e.body:null}clone(e={}){return new t({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},sr=class extends Fa{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}},Ex=200,Ok=204;function zp(t,e){return{body:e,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var eo=(()=>{let e=class e{constructor(n){this.handler=n}request(n,r,o={}){let s;if(n instanceof ka)s=n;else{let c;o.headers instanceof Ri?c=o.headers:c=new Ri(o.headers);let d;o.params&&(o.params instanceof ar?d=o.params:d=new ar({fromObject:o.params})),s=new ka(n,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:d,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache})}let a=k(s).pipe(Wi(c=>this.handler.handle(c)));if(n instanceof ka||o.observe==="events")return a;let l=a.pipe(ce(c=>c instanceof Jr));switch(o.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return l.pipe(N(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return l.pipe(N(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return l.pipe(N(c=>{if(c.body!==null&&typeof c.body!="string")throw new Error("Response is not a string.");return c.body}));case"json":default:return l.pipe(N(c=>c.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${o.observe}}`)}}delete(n,r={}){return this.request("DELETE",n,r)}get(n,r={}){return this.request("GET",n,r)}head(n,r={}){return this.request("HEAD",n,r)}jsonp(n,r){return this.request("JSONP",n,{params:new ar().append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,r={}){return this.request("OPTIONS",n,r)}patch(n,r,o={}){return this.request("PATCH",n,zp(o,r))}post(n,r,o={}){return this.request("POST",n,zp(o,r))}put(n,r,o={}){return this.request("PUT",n,zp(o,r))}};e.\u0275fac=function(r){return new(r||e)(g(Na))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),kk=/^\)\]\}',?\n/,Nk="X-Request-URL";function wx(t){if(t.url)return t.url;let e=Nk.toLocaleLowerCase();return t.headers.get(e)}var Fk=(()=>{let e=class e{constructor(){this.fetchImpl=y($p,{optional:!0})?.fetch??fetch.bind(globalThis),this.ngZone=y(A)}handle(n){return new q(r=>{let o=new AbortController;return this.doRequest(n,o.signal,r).then(Wp,s=>r.error(new sr({error:s}))),()=>o.abort()})}doRequest(n,r,o){return ql(this,null,function*(){let s=this.createRequestInit(n),a;try{let p=this.fetchImpl(n.urlWithParams,w({signal:r},s));Pk(p),o.next({type:lr.Sent}),a=yield p}catch(p){o.error(new sr({error:p,status:p.status??0,statusText:p.statusText,url:n.urlWithParams,headers:p.headers}));return}let l=new Ri(a.headers),c=a.statusText,d=wx(a)??n.urlWithParams,u=a.status,f=null;if(n.reportProgress&&o.next(new ru({headers:l,status:u,statusText:c,url:d})),a.body){let p=a.headers.get("content-length"),_=[],x=a.body.getReader(),I=0,V,le,ne=typeof Zone<"u"&&Zone.current;yield this.ngZone.runOutsideAngular(()=>ql(this,null,function*(){for(;;){let{done:ke,value:je}=yield x.read();if(ke)break;if(_.push(je),I+=je.length,n.reportProgress){le=n.responseType==="text"?(le??"")+(V??=new TextDecoder).decode(je,{stream:!0}):void 0;let it=()=>o.next({type:lr.DownloadProgress,total:p?+p:void 0,loaded:I,partialText:le});ne?ne.run(it):it()}}}));let ut=this.concatChunks(_,I);try{let ke=a.headers.get("Content-Type")??"";f=this.parseBody(n,ut,ke)}catch(ke){o.error(new sr({error:ke,headers:new Ri(a.headers),status:a.status,statusText:a.statusText,url:wx(a)??n.urlWithParams}));return}}u===0&&(u=f?Ex:0),u>=200&&u<300?(o.next(new Jr({body:f,headers:l,status:u,statusText:c,url:d})),o.complete()):o.error(new sr({error:f,headers:l,status:u,statusText:c,url:d}))})}parseBody(n,r,o){switch(n.responseType){case"json":let s=new TextDecoder().decode(r).replace(kk,"");return s===""?null:JSON.parse(s);case"text":return new TextDecoder().decode(r);case"blob":return new Blob([r],{type:o});case"arraybuffer":return r.buffer}}createRequestInit(n){let r={},o=n.withCredentials?"include":void 0;if(n.headers.forEach((s,a)=>r[s]=a.join(",")),r.Accept??="application/json, text/plain, */*",!r["Content-Type"]){let s=n.detectContentTypeHeader();s!==null&&(r["Content-Type"]=s)}return{body:n.serializeBody(),method:n.method,headers:r,credentials:o}}concatChunks(n,r){let o=new Uint8Array(r),s=0;for(let a of n)o.set(a,s),s+=a.length;return o}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),$p=class{};function Wp(){}function Pk(t){t.then(Wp,Wp)}function Ix(t,e){return e(t)}function Lk(t,e){return(i,n)=>e.intercept(i,{handle:r=>t(r,n)})}function jk(t,e,i){return(n,r)=>Yt(i,()=>e(n,o=>t(o,r)))}var Gp=new D(""),qp=new D(""),Vk=new D(""),Sx=new D("",{providedIn:"root",factory:()=>!0});function Bk(){let t=null;return(e,i)=>{t===null&&(t=(y(Gp,{optional:!0})??[]).reduceRight(Lk,Ix));let n=y(Ci);if(y(Sx)){let o=n.add();return t(e,i).pipe($n(()=>n.remove(o)))}else return t(e,i)}}var xx=(()=>{let e=class e extends Na{constructor(n,r){super(),this.backend=n,this.injector=r,this.chain=null,this.pendingTasks=y(Ci),this.contributeToStability=y(Sx)}handle(n){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(qp),...this.injector.get(Vk,[])]));this.chain=r.reduceRight((o,s)=>jk(o,s,this.injector),Ix)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(n,o=>this.backend.handle(o)).pipe($n(()=>this.pendingTasks.remove(r)))}else return this.chain(n,r=>this.backend.handle(r))}};e.\u0275fac=function(r){return new(r||e)(g(iu),g(Mt))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();var zk=/^\)\]\}',?\n/;function Uk(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var Dx=(()=>{let e=class e{constructor(n){this.xhrFactory=n}handle(n){if(n.method==="JSONP")throw new S(-2800,!1);let r=this.xhrFactory;return(r.\u0275loadImpl?$e(r.\u0275loadImpl()):k(null)).pipe(We(()=>new q(s=>{let a=r.build();if(a.open(n.method,n.urlWithParams),n.withCredentials&&(a.withCredentials=!0),n.headers.forEach((x,I)=>a.setRequestHeader(x,I.join(","))),n.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){let x=n.detectContentTypeHeader();x!==null&&a.setRequestHeader("Content-Type",x)}if(n.responseType){let x=n.responseType.toLowerCase();a.responseType=x!=="json"?x:"text"}let l=n.serializeBody(),c=null,d=()=>{if(c!==null)return c;let x=a.statusText||"OK",I=new Ri(a.getAllResponseHeaders()),V=Uk(a)||n.url;return c=new ru({headers:I,status:a.status,statusText:x,url:V}),c},u=()=>{let{headers:x,status:I,statusText:V,url:le}=d(),ne=null;I!==Ok&&(ne=typeof a.response>"u"?a.responseText:a.response),I===0&&(I=ne?Ex:0);let ut=I>=200&&I<300;if(n.responseType==="json"&&typeof ne=="string"){let ke=ne;ne=ne.replace(zk,"");try{ne=ne!==""?JSON.parse(ne):null}catch(je){ne=ke,ut&&(ut=!1,ne={error:je,text:ne})}}ut?(s.next(new Jr({body:ne,headers:x,status:I,statusText:V,url:le||void 0})),s.complete()):s.error(new sr({error:ne,headers:x,status:I,statusText:V,url:le||void 0}))},f=x=>{let{url:I}=d(),V=new sr({error:x,status:a.status||0,statusText:a.statusText||"Unknown Error",url:I||void 0});s.error(V)},m=!1,p=x=>{m||(s.next(d()),m=!0);let I={type:lr.DownloadProgress,loaded:x.loaded};x.lengthComputable&&(I.total=x.total),n.responseType==="text"&&a.responseText&&(I.partialText=a.responseText),s.next(I)},_=x=>{let I={type:lr.UploadProgress,loaded:x.loaded};x.lengthComputable&&(I.total=x.total),s.next(I)};return a.addEventListener("load",u),a.addEventListener("error",f),a.addEventListener("timeout",f),a.addEventListener("abort",f),n.reportProgress&&(a.addEventListener("progress",p),l!==null&&a.upload&&a.upload.addEventListener("progress",_)),a.send(l),s.next({type:lr.Sent}),()=>{a.removeEventListener("error",f),a.removeEventListener("abort",f),a.removeEventListener("load",u),a.removeEventListener("timeout",f),n.reportProgress&&(a.removeEventListener("progress",p),l!==null&&a.upload&&a.upload.removeEventListener("progress",_)),a.readyState!==a.DONE&&a.abort()}})))}};e.\u0275fac=function(r){return new(r||e)(g(rs))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),Mx=new D(""),Hk="XSRF-TOKEN",$k=new D("",{providedIn:"root",factory:()=>Hk}),Wk="X-XSRF-TOKEN",Gk=new D("",{providedIn:"root",factory:()=>Wk}),ou=class{},qk=(()=>{let e=class e{constructor(n,r,o){this.doc=n,this.platform=r,this.cookieName=o,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=Xd(n,this.cookieName),this.lastCookieString=n),this.lastToken}};e.\u0275fac=function(r){return new(r||e)(g(j),g(Ht),g($k))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();function Yk(t,e){let i=t.url.toLowerCase();if(!y(Mx)||t.method==="GET"||t.method==="HEAD"||i.startsWith("http://")||i.startsWith("https://"))return e(t);let n=y(ou).getToken(),r=y(Gk);return n!=null&&!t.headers.has(r)&&(t=t.clone({headers:t.headers.set(r,n)})),e(t)}var Tx=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Tx||{});function Zk(t,e){return{\u0275kind:t,\u0275providers:e}}function Ax(...t){let e=[eo,Dx,xx,{provide:Na,useExisting:xx},{provide:iu,useFactory:()=>y(Fk,{optional:!0})??y(Dx)},{provide:qp,useValue:Yk,multi:!0},{provide:Mx,useValue:!0},{provide:ou,useClass:qk}];for(let i of t)e.push(...i.\u0275providers);return Wr(e)}var Cx=new D("");function Rx(){return Zk(Tx.LegacyInterceptors,[{provide:Cx,useFactory:Bk},{provide:qp,useExisting:Cx,multi:!0}])}var Kp=class extends qd{constructor(){super(...arguments),this.supportsDOMEvents=!0}},Xp=class t extends Kp{static makeCurrent(){lx(new t)}onAndCancel(e,i,n){return e.addEventListener(i,n),()=>{e.removeEventListener(i,n)}}dispatchEvent(e,i){e.dispatchEvent(i)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,i){return i=i||this.getDefaultDocument(),i.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,i){return i==="window"?window:i==="document"?e:i==="body"?e.body:null}getBaseHref(e){let i=Qk();return i==null?null:Kk(i)}resetBaseElement(){Pa=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return Xd(document.cookie,e)}},Pa=null;function Qk(){return Pa=Pa||document.querySelector("base"),Pa?Pa.getAttribute("href"):null}function Kk(t){return new URL(t,document.baseURI).pathname}var Xk=(()=>{let e=class e{build(){return new XMLHttpRequest}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),Jp=new D(""),Nx=(()=>{let e=class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,o){return this._findPluginFor(r).addEventListener(n,r,o)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(s=>s.supports(n)),!r)throw new S(5101,!1);return this._eventNameToPlugin.set(n,r),r}};e.\u0275fac=function(r){return new(r||e)(g(Jp),g(A))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),su=class{constructor(e){this._doc=e}},Zp="ng-app-id",Fx=(()=>{let e=class e{constructor(n,r,o,s={}){this.doc=n,this.appId=r,this.nonce=o,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=eu(s),this.resetHostNodes()}addStyles(n){for(let r of n)this.changeUsageCount(r,1)===1&&this.onStyleAdded(r)}removeStyles(n){for(let r of n)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){let n=this.styleNodesInDOM;n&&(n.forEach(r=>r.remove()),n.clear());for(let r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(let r of this.getAllStyles())this.addStyleToHost(n,r)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(let r of this.hostNodes)this.addStyleToHost(r,n)}onStyleRemoved(n){let r=this.styleRef;r.get(n)?.elements?.forEach(o=>o.remove()),r.delete(n)}collectServerRenderedStyles(){let n=this.doc.head?.querySelectorAll(`style[${Zp}="${this.appId}"]`);if(n?.length){let r=new Map;return n.forEach(o=>{o.textContent!=null&&r.set(o.textContent,o)}),r}return null}changeUsageCount(n,r){let o=this.styleRef;if(o.has(n)){let s=o.get(n);return s.usage+=r,s.usage}return o.set(n,{usage:r,elements:[]}),r}getStyleElement(n,r){let o=this.styleNodesInDOM,s=o?.get(r);if(s?.parentNode===n)return o.delete(r),s.removeAttribute(Zp),s;{let a=this.doc.createElement("style");return this.nonce&&a.setAttribute("nonce",this.nonce),a.textContent=r,this.platformIsServer&&a.setAttribute(Zp,this.appId),n.appendChild(a),a}}addStyleToHost(n,r){let o=this.getStyleElement(n,r),s=this.styleRef,a=s.get(r)?.elements;a?a.push(o):s.set(r,{elements:[o],usage:1})}resetHostNodes(){let n=this.hostNodes;n.clear(),n.add(this.doc.head)}};e.\u0275fac=function(r){return new(r||e)(g(j),g(Ca),g(Ea,8),g(Ht))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),Qp={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/",math:"http://www.w3.org/1998/Math/MathML"},tg=/%COMP%/g,Px="%COMP%",Jk=`_nghost-${Px}`,e1=`_ngcontent-${Px}`,t1=!0,n1=new D("",{providedIn:"root",factory:()=>t1});function i1(t){return e1.replace(tg,t)}function r1(t){return Jk.replace(tg,t)}function Lx(t,e){return e.map(i=>i.replace(tg,t))}var au=(()=>{let e=class e{constructor(n,r,o,s,a,l,c,d=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=s,this.doc=a,this.platformId=l,this.ngZone=c,this.nonce=d,this.rendererByCompId=new Map,this.platformIsServer=eu(l),this.defaultRenderer=new La(n,a,c,this.platformIsServer)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===Yn.ShadowDom&&(r=Z(w({},r),{encapsulation:Yn.Emulated}));let o=this.getOrCreateRenderer(n,r);return o instanceof lu?o.applyToHost(n):o instanceof ja&&o.applyStyles(),o}getOrCreateRenderer(n,r){let o=this.rendererByCompId,s=o.get(r.id);if(!s){let a=this.doc,l=this.ngZone,c=this.eventManager,d=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,f=this.platformIsServer;switch(r.encapsulation){case Yn.Emulated:s=new lu(c,d,r,this.appId,u,a,l,f);break;case Yn.ShadowDom:return new eg(c,d,n,r,a,l,this.nonce,f);default:s=new ja(c,d,r,u,a,l,f);break}o.set(r.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}};e.\u0275fac=function(r){return new(r||e)(g(Nx),g(Fx),g(Ca),g(n1),g(j),g(Ht),g(A),g(Ea))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),La=class{constructor(e,i,n,r){this.eventManager=e,this.doc=i,this.ngZone=n,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,i){return i?this.doc.createElementNS(Qp[i]||i,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,i){(Ox(e)?e.content:e).appendChild(i)}insertBefore(e,i,n){e&&(Ox(e)?e.content:e).insertBefore(i,n)}removeChild(e,i){e&&e.removeChild(i)}selectRootElement(e,i){let n=typeof e=="string"?this.doc.querySelector(e):e;if(!n)throw new S(-5104,!1);return i||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,i,n,r){if(r){i=r+":"+i;let o=Qp[r];o?e.setAttributeNS(o,i,n):e.setAttribute(i,n)}else e.setAttribute(i,n)}removeAttribute(e,i,n){if(n){let r=Qp[n];r?e.removeAttributeNS(r,i):e.removeAttribute(`${n}:${i}`)}else e.removeAttribute(i)}addClass(e,i){e.classList.add(i)}removeClass(e,i){e.classList.remove(i)}setStyle(e,i,n,r){r&(_i.DashCase|_i.Important)?e.style.setProperty(i,n,r&_i.Important?"important":""):e.style[i]=n}removeStyle(e,i,n){n&_i.DashCase?e.style.removeProperty(i):e.style[i]=""}setProperty(e,i,n){e!=null&&(e[i]=n)}setValue(e,i){e.nodeValue=i}listen(e,i,n){if(typeof e=="string"&&(e=Ti().getGlobalEventTarget(this.doc,e),!e))throw new Error(`Unsupported event target ${e} for event ${i}`);return this.eventManager.addEventListener(e,i,this.decoratePreventDefault(n))}decoratePreventDefault(e){return i=>{if(i==="__ngUnwrap__")return e;(this.platformIsServer?this.ngZone.runGuarded(()=>e(i)):e(i))===!1&&i.preventDefault()}}};function Ox(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var eg=class extends La{constructor(e,i,n,r,o,s,a,l){super(e,o,s,l),this.sharedStylesHost=i,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let c=Lx(r.id,r.styles);for(let d of c){let u=document.createElement("style");a&&u.setAttribute("nonce",a),u.textContent=d,this.shadowRoot.appendChild(u)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,i){return super.appendChild(this.nodeOrShadowRoot(e),i)}insertBefore(e,i,n){return super.insertBefore(this.nodeOrShadowRoot(e),i,n)}removeChild(e,i){return super.removeChild(this.nodeOrShadowRoot(e),i)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},ja=class extends La{constructor(e,i,n,r,o,s,a,l){super(e,o,s,a),this.sharedStylesHost=i,this.removeStylesOnCompDestroy=r,this.styles=l?Lx(l,n.styles):n.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},lu=class extends ja{constructor(e,i,n,r,o,s,a,l){let c=r+"-"+n.id;super(e,i,n,o,s,a,l,c),this.contentAttr=i1(c),this.hostAttr=r1(c)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,i){let n=super.createElement(e,i);return super.setAttribute(n,this.contentAttr,""),n}},o1=(()=>{let e=class e extends su{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o){return n.addEventListener(r,o,!1),()=>this.removeEventListener(n,r,o)}removeEventListener(n,r,o){return n.removeEventListener(r,o)}};e.\u0275fac=function(r){return new(r||e)(g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),kx=["alt","control","meta","shift"],s1={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},a1={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},l1=(()=>{let e=class e extends su{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,r,o){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ti().onAndCancel(n,s.domEventName,a))}static parseEventName(n){let r=n.toLowerCase().split("."),o=r.shift();if(r.length===0||!(o==="keydown"||o==="keyup"))return null;let s=e._normalizeKey(r.pop()),a="",l=r.indexOf("code");if(l>-1&&(r.splice(l,1),a="code."),kx.forEach(d=>{let u=r.indexOf(d);u>-1&&(r.splice(u,1),a+=d+".")}),a+=s,r.length!=0||s.length===0)return null;let c={};return c.domEventName=o,c.fullKey=a,c}static matchEventFullKeyCode(n,r){let o=s1[n.key]||n.key,s="";return r.indexOf("code.")>-1&&(o=n.code,s="code."),o==null||!o?!1:(o=o.toLowerCase(),o===" "?o="space":o==="."&&(o="dot"),kx.forEach(a=>{if(a!==o){let l=a1[a];l(n)&&(s+=a+".")}}),s+=o,s===r)}static eventCallback(n,r,o){return s=>{e.matchEventFullKeyCode(s,n)&&o.runGuarded(()=>r(s))}}static _normalizeKey(n){return n==="esc"?"escape":n}};e.\u0275fac=function(r){return new(r||e)(g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();function jx(t,e){return nx(w({rootComponent:t},c1(e)))}function c1(t){return{appProviders:[...m1,...t?.providers??[]],platformProviders:h1}}function d1(){Xp.makeCurrent()}function u1(){return new Ot}function f1(){return M0(document),document}var h1=[{provide:Ht,useValue:Bp},{provide:cp,useValue:d1,multi:!0},{provide:j,useFactory:f1,deps:[]}];var m1=[{provide:bd,useValue:"root"},{provide:Ot,useFactory:u1,deps:[]},{provide:Jp,useClass:o1,multi:!0,deps:[j,A,Ht]},{provide:Jp,useClass:l1,multi:!0,deps:[j]},au,Fx,Nx,{provide:Ji,useExisting:au},{provide:rs,useClass:Xk,deps:[]},[]];var Vx=(()=>{let e=class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}};e.\u0275fac=function(r){return new(r||e)(g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var ng=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=g(p1),o},providedIn:"root"});let t=e;return t})(),p1=(()=>{let e=class e extends ng{constructor(n){super(),this._doc=n}sanitize(n,r){if(r==null)return null;switch(n){case kt.NONE:return r;case kt.HTML:return qr(r,"HTML")?Xn(r):fp(this._doc,String(r)).toString();case kt.STYLE:return qr(r,"Style")?Xn(r):r;case kt.SCRIPT:if(qr(r,"Script"))return Xn(r);throw new S(5200,!1);case kt.URL:return qr(r,"URL")?Xn(r):up(String(r));case kt.RESOURCE_URL:if(qr(r,"ResourceURL"))return Xn(r);throw new S(5201,!1);default:throw new S(5202,!1)}}bypassSecurityTrustHtml(n){return R0(n)}bypassSecurityTrustStyle(n){return O0(n)}bypassSecurityTrustScript(n){return k0(n)}bypassSecurityTrustUrl(n){return N0(n)}bypassSecurityTrustResourceUrl(n){return F0(n)}};e.\u0275fac=function(r){return new(r||e)(g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var pe="primary",tl=Symbol("RouteTitle"),ag=class{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){let i=this.params[e];return Array.isArray(i)?i[0]:i}return null}getAll(e){if(this.has(e)){let i=this.params[e];return Array.isArray(i)?i:[i]}return[]}get keys(){return Object.keys(this.params)}};function ds(t){return new ag(t)}function g1(t,e,i){let n=i.path.split("/");if(n.length>t.length||i.pathMatch==="full"&&(e.hasChildren()||n.lengthn[o]===r)}else return t===e}function Zx(t){return t.length>0?t[t.length-1]:null}function dr(t){return Tr(t)?t:Kr(t)?$e(Promise.resolve(t)):k(t)}var b1={exact:Kx,subset:Xx},Qx={exact:_1,subset:y1,ignored:()=>!0};function zx(t,e,i){return b1[i.paths](t.root,e.root,i.matrixParams)&&Qx[i.queryParams](t.queryParams,e.queryParams)&&!(i.fragment==="exact"&&t.fragment!==e.fragment)}function _1(t,e){return ii(t,e)}function Kx(t,e,i){if(!no(t.segments,e.segments)||!uu(t.segments,e.segments,i)||t.numberOfChildren!==e.numberOfChildren)return!1;for(let n in e.children)if(!t.children[n]||!Kx(t.children[n],e.children[n],i))return!1;return!0}function y1(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(i=>Yx(t[i],e[i]))}function Xx(t,e,i){return Jx(t,e,e.segments,i)}function Jx(t,e,i,n){if(t.segments.length>i.length){let r=t.segments.slice(0,i.length);return!(!no(r,i)||e.hasChildren()||!uu(r,i,n))}else if(t.segments.length===i.length){if(!no(t.segments,i)||!uu(t.segments,i,n))return!1;for(let r in e.children)if(!t.children[r]||!Xx(t.children[r],e.children[r],n))return!1;return!0}else{let r=i.slice(0,t.segments.length),o=i.slice(t.segments.length);return!no(t.segments,r)||!uu(t.segments,r,n)||!t.children[pe]?!1:Jx(t.children[pe],e,o,n)}}function uu(t,e,i){return e.every((n,r)=>Qx[i](t[r].parameters,n.parameters))}var cr=class{constructor(e=new Pe([],{}),i={},n=null){this.root=e,this.queryParams=i,this.fragment=n}get queryParamMap(){return this._queryParamMap??=ds(this.queryParams),this._queryParamMap}toString(){return D1.serialize(this)}},Pe=class{constructor(e,i){this.segments=e,this.children=i,this.parent=null,Object.values(i).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return fu(this)}},to=class{constructor(e,i){this.path=e,this.parameters=i}get parameterMap(){return this._parameterMap??=ds(this.parameters),this._parameterMap}toString(){return tD(this)}};function w1(t,e){return no(t,e)&&t.every((i,n)=>ii(i.parameters,e[n].parameters))}function no(t,e){return t.length!==e.length?!1:t.every((i,n)=>i.path===e[n].path)}function x1(t,e){let i=[];return Object.entries(t.children).forEach(([n,r])=>{n===pe&&(i=i.concat(e(r,n)))}),Object.entries(t.children).forEach(([n,r])=>{n!==pe&&(i=i.concat(e(r,n)))}),i}var Ng=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>new Wa,providedIn:"root"});let t=e;return t})(),Wa=class{parse(e){let i=new dg(e);return new cr(i.parseRootSegment(),i.parseQueryParams(),i.parseFragment())}serialize(e){let i=`/${Va(e.root,!0)}`,n=I1(e.queryParams),r=typeof e.fragment=="string"?`#${C1(e.fragment)}`:"";return`${i}${n}${r}`}},D1=new Wa;function fu(t){return t.segments.map(e=>tD(e)).join("/")}function Va(t,e){if(!t.hasChildren())return fu(t);if(e){let i=t.children[pe]?Va(t.children[pe],!1):"",n=[];return Object.entries(t.children).forEach(([r,o])=>{r!==pe&&n.push(`${r}:${Va(o,!1)}`)}),n.length>0?`${i}(${n.join("//")})`:i}else{let i=x1(t,(n,r)=>r===pe?[Va(t.children[pe],!1)]:[`${r}:${Va(n,!1)}`]);return Object.keys(t.children).length===1&&t.children[pe]!=null?`${fu(t)}/${i[0]}`:`${fu(t)}/(${i.join("//")})`}}function eD(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function cu(t){return eD(t).replace(/%3B/gi,";")}function C1(t){return encodeURI(t)}function cg(t){return eD(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function hu(t){return decodeURIComponent(t)}function Ux(t){return hu(t.replace(/\+/g,"%20"))}function tD(t){return`${cg(t.path)}${E1(t.parameters)}`}function E1(t){return Object.entries(t).map(([e,i])=>`;${cg(e)}=${cg(i)}`).join("")}function I1(t){let e=Object.entries(t).map(([i,n])=>Array.isArray(n)?n.map(r=>`${cu(i)}=${cu(r)}`).join("&"):`${cu(i)}=${cu(n)}`).filter(i=>i);return e.length?`?${e.join("&")}`:""}var S1=/^[^\/()?;#]+/;function ig(t){let e=t.match(S1);return e?e[0]:""}var M1=/^[^\/()?;=#]+/;function T1(t){let e=t.match(M1);return e?e[0]:""}var A1=/^[^=?&#]+/;function R1(t){let e=t.match(A1);return e?e[0]:""}var O1=/^[^&#]+/;function k1(t){let e=t.match(O1);return e?e[0]:""}var dg=class{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new Pe([],{}):new Pe([],this.parseChildren())}parseQueryParams(){let e={};if(this.consumeOptional("?"))do this.parseQueryParam(e);while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(i).length>0)&&(n[pe]=new Pe(e,i)),n}parseSegment(){let e=ig(this.remaining);if(e===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(e),new to(hu(e),this.parseMatrixParams())}parseMatrixParams(){let e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){let i=T1(this.remaining);if(!i)return;this.capture(i);let n="";if(this.consumeOptional("=")){let r=ig(this.remaining);r&&(n=r,this.capture(n))}e[hu(i)]=hu(n)}parseQueryParam(e){let i=R1(this.remaining);if(!i)return;this.capture(i);let n="";if(this.consumeOptional("=")){let s=k1(this.remaining);s&&(n=s,this.capture(n))}let r=Ux(i),o=Ux(n);if(e.hasOwnProperty(r)){let s=e[r];Array.isArray(s)||(s=[s],e[r]=s),s.push(o)}else e[r]=o}parseParens(e){let i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let n=ig(this.remaining),r=this.remaining[n.length];if(r!=="/"&&r!==")"&&r!==";")throw new S(4010,!1);let o;n.indexOf(":")>-1?(o=n.slice(0,n.indexOf(":")),this.capture(o),this.capture(":")):e&&(o=pe);let s=this.parseChildren();i[o]=Object.keys(s).length===1?s[pe]:new Pe([],s),this.consumeOptional("//")}return i}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return this.peekStartsWith(e)?(this.remaining=this.remaining.substring(e.length),!0):!1}capture(e){if(!this.consumeOptional(e))throw new S(4011,!1)}};function nD(t){return t.segments.length>0?new Pe([],{[pe]:t}):t}function iD(t){let e={};for(let[n,r]of Object.entries(t.children)){let o=iD(r);if(n===pe&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))e[s]=a;else(o.segments.length>0||o.hasChildren())&&(e[n]=o)}let i=new Pe(t.segments,e);return N1(i)}function N1(t){if(t.numberOfChildren===1&&t.children[pe]){let e=t.children[pe];return new Pe(t.segments.concat(e.segments),e.children)}return t}function Ga(t){return t instanceof cr}function F1(t,e,i=null,n=null){let r=rD(t);return oD(r,e,i,n)}function rD(t){let e;function i(o){let s={};for(let l of o.children){let c=i(l);s[l.outlet]=c}let a=new Pe(o.url,s);return o===t&&(e=a),a}let n=i(t.root),r=nD(n);return e??r}function oD(t,e,i,n){let r=t;for(;r.parent;)r=r.parent;if(e.length===0)return rg(r,r,r,i,n);let o=P1(e);if(o.toRoot())return rg(r,r,new Pe([],{}),i,n);let s=L1(o,r,t),a=s.processChildren?Ua(s.segmentGroup,s.index,o.commands):aD(s.segmentGroup,s.index,o.commands);return rg(r,s.segmentGroup,a,i,n)}function mu(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function qa(t){return typeof t=="object"&&t!=null&&t.outlets}function rg(t,e,i,n,r){let o={};n&&Object.entries(n).forEach(([l,c])=>{o[l]=Array.isArray(c)?c.map(d=>`${d}`):`${c}`});let s;t===e?s=i:s=sD(t,e,i);let a=nD(iD(s));return new cr(a,o,r)}function sD(t,e,i){let n={};return Object.entries(t.children).forEach(([r,o])=>{o===e?n[r]=i:n[r]=sD(o,e,i)}),new Pe(t.segments,n)}var pu=class{constructor(e,i,n){if(this.isAbsolute=e,this.numberOfDoubleDots=i,this.commands=n,e&&n.length>0&&mu(n[0]))throw new S(4003,!1);let r=n.find(qa);if(r&&r!==Zx(n))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function P1(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new pu(!0,0,t);let e=0,i=!1,n=t.reduce((r,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([l,c])=>{a[l]=typeof c=="string"?c.split("/"):c}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return typeof o!="string"?[...r,o]:s===0?(o.split("/").forEach((a,l)=>{l==0&&a==="."||(l==0&&a===""?i=!0:a===".."?e++:a!=""&&r.push(a))}),r):[...r,o]},[]);return new pu(i,e,n)}var as=class{constructor(e,i,n){this.segmentGroup=e,this.processChildren=i,this.index=n}};function L1(t,e,i){if(t.isAbsolute)return new as(e,!0,0);if(!i)return new as(e,!1,NaN);if(i.parent===null)return new as(i,!0,0);let n=mu(t.commands[0])?0:1,r=i.segments.length-1+n;return j1(i,r,t.numberOfDoubleDots)}function j1(t,e,i){let n=t,r=e,o=i;for(;o>r;){if(o-=r,n=n.parent,!n)throw new S(4005,!1);r=n.segments.length}return new as(n,!1,r-o)}function V1(t){return qa(t[0])?t[0].outlets:{[pe]:t}}function aD(t,e,i){if(t??=new Pe([],{}),t.segments.length===0&&t.hasChildren())return Ua(t,e,i);let n=B1(t,e,i),r=i.slice(n.commandIndex);if(n.match&&n.pathIndexo!==pe)&&t.children[pe]&&t.numberOfChildren===1&&t.children[pe].segments.length===0){let o=Ua(t.children[pe],e,i);return new Pe(t.segments,o.children)}return Object.entries(n).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(r[o]=aD(t.children[o],e,s))}),Object.entries(t.children).forEach(([o,s])=>{n[o]===void 0&&(r[o]=s)}),new Pe(t.segments,r)}}function B1(t,e,i){let n=0,r=e,o={match:!1,pathIndex:0,commandIndex:0};for(;r=i.length)return o;let s=t.segments[r],a=i[n];if(qa(a))break;let l=`${a}`,c=n0&&l===void 0)break;if(l&&c&&typeof c=="object"&&c.outlets===void 0){if(!$x(l,c,s))return o;n+=2}else{if(!$x(l,{},s))return o;n++}r++}return{match:!0,pathIndex:r,commandIndex:n}}function ug(t,e,i){let n=t.segments.slice(0,e),r=0;for(;r{typeof n=="string"&&(n=[n]),n!==null&&(e[i]=ug(new Pe([],{}),0,n))}),e}function Hx(t){let e={};return Object.entries(t).forEach(([i,n])=>e[i]=`${n}`),e}function $x(t,e,i){return t==i.path&&ii(e,i.parameters)}var Ha="imperative",Dt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(Dt||{}),hn=class{constructor(e,i){this.id=e,this.url=i}},Ya=class extends hn{constructor(e,i,n="imperative",r=null){super(e,i),this.type=Dt.NavigationStart,this.navigationTrigger=n,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},ki=class extends hn{constructor(e,i,n){super(e,i),this.urlAfterRedirects=n,this.type=Dt.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},Xt=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(Xt||{}),fg=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(fg||{}),Oi=class extends hn{constructor(e,i,n,r){super(e,i),this.reason=n,this.code=r,this.type=Dt.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},io=class extends hn{constructor(e,i,n,r){super(e,i),this.reason=n,this.code=r,this.type=Dt.NavigationSkipped}},Za=class extends hn{constructor(e,i,n,r){super(e,i),this.error=n,this.target=r,this.type=Dt.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},gu=class extends hn{constructor(e,i,n,r){super(e,i),this.urlAfterRedirects=n,this.state=r,this.type=Dt.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},hg=class extends hn{constructor(e,i,n,r){super(e,i),this.urlAfterRedirects=n,this.state=r,this.type=Dt.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},mg=class extends hn{constructor(e,i,n,r,o){super(e,i),this.urlAfterRedirects=n,this.state=r,this.shouldActivate=o,this.type=Dt.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},pg=class extends hn{constructor(e,i,n,r){super(e,i),this.urlAfterRedirects=n,this.state=r,this.type=Dt.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},gg=class extends hn{constructor(e,i,n,r){super(e,i),this.urlAfterRedirects=n,this.state=r,this.type=Dt.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},vg=class{constructor(e){this.route=e,this.type=Dt.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},bg=class{constructor(e){this.route=e,this.type=Dt.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},_g=class{constructor(e){this.snapshot=e,this.type=Dt.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},yg=class{constructor(e){this.snapshot=e,this.type=Dt.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},wg=class{constructor(e){this.snapshot=e,this.type=Dt.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},xg=class{constructor(e){this.snapshot=e,this.type=Dt.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var Qa=class{},us=class{constructor(e,i){this.url=e,this.navigationBehaviorOptions=i}};var Dg=class{constructor(e){this.injector=e,this.outlet=null,this.route=null,this.children=new Du(this.injector),this.attachRef=null}},Du=(()=>{let e=class e{constructor(n){this.parentInjector=n,this.contexts=new Map}onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Dg(this.parentInjector),this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}};e.\u0275fac=function(r){return new(r||e)(g(Mt))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),vu=class{constructor(e){this._root=e}get root(){return this._root.value}parent(e){let i=this.pathFromRoot(e);return i.length>1?i[i.length-2]:null}children(e){let i=Cg(e,this._root);return i?i.children.map(n=>n.value):[]}firstChild(e){let i=Cg(e,this._root);return i&&i.children.length>0?i.children[0].value:null}siblings(e){let i=Eg(e,this._root);return i.length<2?[]:i[i.length-2].children.map(r=>r.value).filter(r=>r!==e)}pathFromRoot(e){return Eg(e,this._root).map(i=>i.value)}};function Cg(t,e){if(t===e.value)return e;for(let i of e.children){let n=Cg(t,i);if(n)return n}return null}function Eg(t,e){if(t===e.value)return[e];for(let i of e.children){let n=Eg(t,i);if(n.length)return n.unshift(e),n}return[]}var Kt=class{constructor(e,i){this.value=e,this.children=i}toString(){return`TreeNode(${this.value})`}};function ss(t){let e={};return t&&t.children.forEach(i=>e[i.value.outlet]=i),e}var bu=class extends vu{constructor(e,i){super(e),this.snapshot=i,Fg(this,e)}toString(){return this.snapshot.toString()}};function lD(t){let e=U1(t),i=new rt([new to("",{})]),n=new rt({}),r=new rt({}),o=new rt({}),s=new rt(""),a=new fs(i,n,o,s,r,pe,t,e.root);return a.snapshot=e.root,new bu(new Kt(a,[]),e)}function U1(t){let e={},i={},n={},r="",o=new ls([],e,n,r,i,pe,t,null,{});return new yu("",new Kt(o,[]))}var fs=class{constructor(e,i,n,r,o,s,a,l){this.urlSubject=e,this.paramsSubject=i,this.queryParamsSubject=n,this.fragmentSubject=r,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(N(c=>c[tl]))??k(void 0),this.url=e,this.params=i,this.queryParams=n,this.fragment=r,this.data=o}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.params.pipe(N(e=>ds(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(N(e=>ds(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function _u(t,e,i="emptyOnly"){let n,{routeConfig:r}=t;return e!==null&&(i==="always"||r?.path===""||!e.component&&!e.routeConfig?.loadComponent)?n={params:w(w({},e.params),t.params),data:w(w({},e.data),t.data),resolve:w(w(w(w({},t.data),e.data),r?.data),t._resolvedData)}:n={params:w({},t.params),data:w({},t.data),resolve:w(w({},t.data),t._resolvedData??{})},r&&dD(r)&&(n.resolve[tl]=r.title),n}var ls=class{get title(){return this.data?.[tl]}constructor(e,i,n,r,o,s,a,l,c){this.url=e,this.params=i,this.queryParams=n,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c}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??=ds(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=ds(this.queryParams),this._queryParamMap}toString(){let e=this.url.map(n=>n.toString()).join("/"),i=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${e}', path:'${i}')`}},yu=class extends vu{constructor(e,i){super(i),this.url=e,Fg(this,i)}toString(){return cD(this._root)}};function Fg(t,e){e.value._routerState=t,e.children.forEach(i=>Fg(t,i))}function cD(t){let e=t.children.length>0?` { ${t.children.map(cD).join(", ")} } `:"";return`${t.value}${e}`}function og(t){if(t.snapshot){let e=t.snapshot,i=t._futureSnapshot;t.snapshot=i,ii(e.queryParams,i.queryParams)||t.queryParamsSubject.next(i.queryParams),e.fragment!==i.fragment&&t.fragmentSubject.next(i.fragment),ii(e.params,i.params)||t.paramsSubject.next(i.params),v1(e.url,i.url)||t.urlSubject.next(i.url),ii(e.data,i.data)||t.dataSubject.next(i.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Ig(t,e){let i=ii(t.params,e.params)&&w1(t.url,e.url),n=!t.parent!=!e.parent;return i&&!n&&(!t.parent||Ig(t.parent,e.parent))}function dD(t){return typeof t.title=="string"||t.title===null}var Pg=(()=>{let e=class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=pe,this.activateEvents=new G,this.deactivateEvents=new G,this.attachEvents=new G,this.detachEvents=new G,this.parentContexts=y(Du),this.location=y(Je),this.changeDetector=y(Fe),this.inputBinder=y(Lg,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=n;let o=this.location,a=n.snapshot.component,l=this.parentContexts.getOrCreateContext(this.name).children,c=new Sg(n,l,o.injector);this.activated=o.createComponent(a,{index:o.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Xe]});let t=e;return t})(),Sg=class t{__ngOutletInjector(e){return new t(this.route,this.childContexts,e)}constructor(e,i,n){this.route=e,this.childContexts=i,this.parent=n}get(e,i){return e===fs?this.route:e===Du?this.childContexts:this.parent.get(e,i)}},Lg=new D("");function H1(t,e,i){let n=Ka(t,e._root,i?i._root:void 0);return new bu(n,e)}function Ka(t,e,i){if(i&&t.shouldReuseRoute(e.value,i.value.snapshot)){let n=i.value;n._futureSnapshot=e.value;let r=$1(t,e,i);return new Kt(n,r)}else{if(t.shouldAttach(e.value)){let o=t.retrieve(e.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=e.value,s.children=e.children.map(a=>Ka(t,a)),s}}let n=W1(e.value),r=e.children.map(o=>Ka(t,o));return new Kt(n,r)}}function $1(t,e,i){return e.children.map(n=>{for(let r of i.children)if(t.shouldReuseRoute(n.value,r.value.snapshot))return Ka(t,n,r);return Ka(t,n)})}function W1(t){return new fs(new rt(t.url),new rt(t.params),new rt(t.queryParams),new rt(t.fragment),new rt(t.data),t.outlet,t.component,t)}var Xa=class{constructor(e,i){this.redirectTo=e,this.navigationBehaviorOptions=i}},uD="ngNavigationCancelingError";function wu(t,e){let{redirectTo:i,navigationBehaviorOptions:n}=Ga(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,r=fD(!1,Xt.Redirect);return r.url=i,r.navigationBehaviorOptions=n,r}function fD(t,e){let i=new Error(`NavigationCancelingError: ${t||""}`);return i[uD]=!0,i.cancellationCode=e,i}function G1(t){return hD(t)&&Ga(t.url)}function hD(t){return!!t&&t[uD]}var q1=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=P({type:e,selectors:[["ng-component"]],standalone:!0,features:[L],decls:1,vars:0,template:function(r,o){r&1&&ie(0,"router-outlet")},dependencies:[Pg],encapsulation:2});let t=e;return t})();function Y1(t,e){return t.providers&&!t._injector&&(t._injector=Mp(t.providers,e,`Route: ${t.path}`)),t._injector??e}function jg(t){let e=t.children&&t.children.map(jg),i=e?Z(w({},t),{children:e}):w({},t);return!i.component&&!i.loadComponent&&(e||i.loadChildren)&&i.outlet&&i.outlet!==pe&&(i.component=q1),i}function An(t){return t.outlet||pe}function Z1(t,e){let i=t.filter(n=>An(n)===e);return i.push(...t.filter(n=>An(n)!==e)),i}function nl(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let e=t.parent;e;e=e.parent){let i=e.routeConfig;if(i?._loadedInjector)return i._loadedInjector;if(i?._injector)return i._injector}return null}var Q1=(t,e,i,n)=>N(r=>(new Mg(e,r.targetRouterState,r.currentRouterState,i,n).activate(t),r)),Mg=class{constructor(e,i,n,r,o){this.routeReuseStrategy=e,this.futureState=i,this.currState=n,this.forwardEvent=r,this.inputBindingEnabled=o}activate(e){let i=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(i,n,e),og(this.futureState.root),this.activateChildRoutes(i,n,e)}deactivateChildRoutes(e,i,n){let r=ss(i);e.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,r[s],n),delete r[s]}),Object.values(r).forEach(o=>{this.deactivateRouteAndItsChildren(o,n)})}deactivateRoutes(e,i,n){let r=e.value,o=i?i.value:null;if(r===o)if(r.component){let s=n.getContext(r.outlet);s&&this.deactivateChildRoutes(e,i,s.children)}else this.deactivateChildRoutes(e,i,n);else o&&this.deactivateRouteAndItsChildren(i,n)}deactivateRouteAndItsChildren(e,i){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,i):this.deactivateRouteAndOutlet(e,i)}detachAndStoreRouteSubtree(e,i){let n=i.getContext(e.value.outlet),r=n&&e.value.component?n.children:i,o=ss(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);if(n&&n.outlet){let s=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:s,route:e,contexts:a})}}deactivateRouteAndOutlet(e,i){let n=i.getContext(e.value.outlet),r=n&&e.value.component?n.children:i,o=ss(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(e,i,n){let r=ss(i);e.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],n),this.forwardEvent(new xg(o.value.snapshot))}),e.children.length&&this.forwardEvent(new yg(e.value.snapshot))}activateRoutes(e,i,n){let r=e.value,o=i?i.value:null;if(og(r),r===o)if(r.component){let s=n.getOrCreateContext(r.outlet);this.activateChildRoutes(e,i,s.children)}else this.activateChildRoutes(e,i,n);else if(r.component){let s=n.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){let a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),og(a.route.value),this.activateChildRoutes(e,null,s.children)}else{let a=nl(r.snapshot);s.attachRef=null,s.route=r,s.injector=a??s.injector,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(e,null,s.children)}}else this.activateChildRoutes(e,null,n)}},xu=class{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}},cs=class{constructor(e,i){this.component=e,this.route=i}};function K1(t,e,i){let n=t._root,r=e?e._root:null;return Ba(n,r,i,[n.value])}function X1(t){let e=t.routeConfig?t.routeConfig.canActivateChild:null;return!e||e.length===0?null:{node:t,guards:e}}function ms(t,e){let i=Symbol(),n=e.get(t,i);return n===i?typeof t=="function"&&!py(t)?t:e.get(t):n}function Ba(t,e,i,n,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=ss(e);return t.children.forEach(s=>{J1(s,o[s.value.outlet],i,n.concat([s.value]),r),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>$a(a,i.getContext(s),r)),r}function J1(t,e,i,n,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=e?e.value:null,a=i?i.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let l=eN(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new xu(n)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Ba(t,e,a?a.children:null,n,r):Ba(t,e,i,n,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new cs(a.outlet.component,s))}else s&&$a(e,a,r),r.canActivateChecks.push(new xu(n)),o.component?Ba(t,null,a?a.children:null,n,r):Ba(t,null,i,n,r);return r}function eN(t,e,i){if(typeof i=="function")return i(t,e);switch(i){case"pathParamsChange":return!no(t.url,e.url);case"pathParamsOrQueryParamsChange":return!no(t.url,e.url)||!ii(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ig(t,e)||!ii(t.queryParams,e.queryParams);case"paramsChange":default:return!Ig(t,e)}}function $a(t,e,i){let n=ss(t),r=t.value;Object.entries(n).forEach(([o,s])=>{r.component?e?$a(s,e.children.getContext(o),i):$a(s,null,i):$a(s,e,i)}),r.component?e&&e.outlet&&e.outlet.isActivated?i.canDeactivateChecks.push(new cs(e.outlet.component,r)):i.canDeactivateChecks.push(new cs(null,r)):i.canDeactivateChecks.push(new cs(null,r))}function il(t){return typeof t=="function"}function tN(t){return typeof t=="boolean"}function nN(t){return t&&il(t.canLoad)}function iN(t){return t&&il(t.canActivate)}function rN(t){return t&&il(t.canActivateChild)}function oN(t){return t&&il(t.canDeactivate)}function sN(t){return t&&il(t.canMatch)}function mD(t){return t instanceof mi||t?.name==="EmptyError"}var du=Symbol("INITIAL_VALUE");function hs(){return We(t=>ko(t.map(e=>e.pipe(Ee(1),yt(du)))).pipe(N(e=>{for(let i of e)if(i!==!0){if(i===du)return du;if(i===!1||aN(i))return i}return!0}),ce(e=>e!==du),Ee(1)))}function aN(t){return Ga(t)||t instanceof Xa}function lN(t,e){return Ke(i=>{let{targetSnapshot:n,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=i;return s.length===0&&o.length===0?k(Z(w({},i),{guardsResult:!0})):cN(s,n,r,t).pipe(Ke(a=>a&&tN(a)?dN(n,o,t,e):k(a)),N(a=>Z(w({},i),{guardsResult:a})))})}function cN(t,e,i,n){return $e(t).pipe(Ke(r=>pN(r.component,r.route,i,e,n)),Wn(r=>r!==!0,!0))}function dN(t,e,i,n){return $e(e).pipe(Wi(r=>sn(fN(r.route.parent,n),uN(r.route,n),mN(t,r.path,i),hN(t,r.route,i))),Wn(r=>r!==!0,!0))}function uN(t,e){return t!==null&&e&&e(new wg(t)),k(!0)}function fN(t,e){return t!==null&&e&&e(new _g(t)),k(!0)}function hN(t,e,i){let n=e.routeConfig?e.routeConfig.canActivate:null;if(!n||n.length===0)return k(!0);let r=n.map(o=>Gt(()=>{let s=nl(e)??i,a=ms(o,s),l=iN(a)?a.canActivate(e,t):Yt(s,()=>a(e,t));return dr(l).pipe(Wn())}));return k(r).pipe(hs())}function mN(t,e,i){let n=e[e.length-1],o=e.slice(0,e.length-1).reverse().map(s=>X1(s)).filter(s=>s!==null).map(s=>Gt(()=>{let a=s.guards.map(l=>{let c=nl(s.node)??i,d=ms(l,c),u=rN(d)?d.canActivateChild(n,t):Yt(c,()=>d(n,t));return dr(u).pipe(Wn())});return k(a).pipe(hs())}));return k(o).pipe(hs())}function pN(t,e,i,n,r){let o=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!o||o.length===0)return k(!0);let s=o.map(a=>{let l=nl(e)??r,c=ms(a,l),d=oN(c)?c.canDeactivate(t,e,i,n):Yt(l,()=>c(t,e,i,n));return dr(d).pipe(Wn())});return k(s).pipe(hs())}function gN(t,e,i,n){let r=e.canLoad;if(r===void 0||r.length===0)return k(!0);let o=r.map(s=>{let a=ms(s,t),l=nN(a)?a.canLoad(e,i):Yt(t,()=>a(e,i));return dr(l)});return k(o).pipe(hs(),pD(n))}function pD(t){return ch(Me(e=>{if(typeof e!="boolean")throw wu(t,e)}),N(e=>e===!0))}function vN(t,e,i,n){let r=e.canMatch;if(!r||r.length===0)return k(!0);let o=r.map(s=>{let a=ms(s,t),l=sN(a)?a.canMatch(e,i):Yt(t,()=>a(e,i));return dr(l)});return k(o).pipe(hs(),pD(n))}var Ja=class{constructor(e){this.segmentGroup=e||null}},el=class extends Error{constructor(e){super(),this.urlTree=e}};function os(t){return zn(new Ja(t))}function bN(t){return zn(new S(4e3,!1))}function _N(t){return zn(fD(!1,Xt.GuardRejected))}var Tg=class{constructor(e,i){this.urlSerializer=e,this.urlTree=i}lineralizeSegments(e,i){let n=[],r=i.root;for(;;){if(n=n.concat(r.segments),r.numberOfChildren===0)return k(n);if(r.numberOfChildren>1||!r.children[pe])return bN(`${e.redirectTo}`);r=r.children[pe]}}applyRedirectCommands(e,i,n,r,o){if(typeof i!="string"){let a=i,{queryParams:l,fragment:c,routeConfig:d,url:u,outlet:f,params:m,data:p,title:_}=r,x=Yt(o,()=>a({params:m,data:p,queryParams:l,fragment:c,routeConfig:d,url:u,outlet:f,title:_}));if(x instanceof cr)throw new el(x);i=x}let s=this.applyRedirectCreateUrlTree(i,this.urlSerializer.parse(i),e,n);if(i[0]==="/")throw new el(s);return s}applyRedirectCreateUrlTree(e,i,n,r){let o=this.createSegmentGroup(e,i.root,n,r);return new cr(o,this.createQueryParams(i.queryParams,this.urlTree.queryParams),i.fragment)}createQueryParams(e,i){let n={};return Object.entries(e).forEach(([r,o])=>{if(typeof o=="string"&&o[0]===":"){let a=o.substring(1);n[r]=i[a]}else n[r]=o}),n}createSegmentGroup(e,i,n,r){let o=this.createSegments(e,i.segments,n,r),s={};return Object.entries(i.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(e,l,n,r)}),new Pe(o,s)}createSegments(e,i,n,r){return i.map(o=>o.path[0]===":"?this.findPosParam(e,o,r):this.findOrReturn(o,n))}findPosParam(e,i,n){let r=n[i.path.substring(1)];if(!r)throw new S(4001,!1);return r}findOrReturn(e,i){let n=0;for(let r of i){if(r.path===e.path)return i.splice(n),r;n++}return e}},Ag={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function yN(t,e,i,n,r){let o=Vg(t,e,i);return o.matched?(n=Y1(e,n),vN(n,e,i,r).pipe(N(s=>s===!0?o:w({},Ag)))):k(o)}function Vg(t,e,i){if(e.path==="**")return wN(i);if(e.path==="")return e.pathMatch==="full"&&(t.hasChildren()||i.length>0)?w({},Ag):{matched:!0,consumedSegments:[],remainingSegments:i,parameters:{},positionalParamSegments:{}};let r=(e.matcher||g1)(i,t,e);if(!r)return w({},Ag);let o={};Object.entries(r.posParams??{}).forEach(([a,l])=>{o[a]=l.path});let s=r.consumed.length>0?w(w({},o),r.consumed[r.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:i.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function wN(t){return{matched:!0,parameters:t.length>0?Zx(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Wx(t,e,i,n){return i.length>0&&CN(t,i,n)?{segmentGroup:new Pe(e,DN(n,new Pe(i,t.children))),slicedSegments:[]}:i.length===0&&EN(t,i,n)?{segmentGroup:new Pe(t.segments,xN(t,i,n,t.children)),slicedSegments:i}:{segmentGroup:new Pe(t.segments,t.children),slicedSegments:i}}function xN(t,e,i,n){let r={};for(let o of i)if(Cu(t,e,o)&&!n[An(o)]){let s=new Pe([],{});r[An(o)]=s}return w(w({},n),r)}function DN(t,e){let i={};i[pe]=e;for(let n of t)if(n.path===""&&An(n)!==pe){let r=new Pe([],{});i[An(n)]=r}return i}function CN(t,e,i){return i.some(n=>Cu(t,e,n)&&An(n)!==pe)}function EN(t,e,i){return i.some(n=>Cu(t,e,n))}function Cu(t,e,i){return(t.hasChildren()||e.length>0)&&i.pathMatch==="full"?!1:i.path===""}function IN(t,e,i,n){return An(t)!==n&&(n===pe||!Cu(e,i,t))?!1:Vg(e,t,i).matched}function SN(t,e,i){return e.length===0&&!t.children[i]}var Rg=class{};function MN(t,e,i,n,r,o,s="emptyOnly"){return new Og(t,e,i,n,r,s,o).recognize()}var TN=31,Og=class{constructor(e,i,n,r,o,s,a){this.injector=e,this.configLoader=i,this.rootComponentType=n,this.config=r,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new Tg(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new S(4002,`'${e.segmentGroup}'`)}recognize(){let e=Wx(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(N(({children:i,rootSnapshot:n})=>{let r=new Kt(n,i),o=new yu("",r),s=F1(n,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}}))}match(e){let i=new ls([],Object.freeze({}),Object.freeze(w({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),pe,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,e,pe,i).pipe(N(n=>({children:n,rootSnapshot:i})),Hn(n=>{if(n instanceof el)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof Ja?this.noMatchError(n):n}))}processSegmentGroup(e,i,n,r,o){return n.segments.length===0&&n.hasChildren()?this.processChildren(e,i,n,o):this.processSegment(e,i,n,n.segments,r,!0,o).pipe(N(s=>s instanceof Kt?[s]:[]))}processChildren(e,i,n,r){let o=[];for(let s of Object.keys(n.children))s==="primary"?o.unshift(s):o.push(s);return $e(o).pipe(Wi(s=>{let a=n.children[s],l=Z1(i,s);return this.processSegmentGroup(e,l,a,s,r)}),_h((s,a)=>(s.push(...a),s)),Gi(null),vh(),Ke(s=>{if(s===null)return os(n);let a=gD(s);return AN(a),k(a)}))}processSegment(e,i,n,r,o,s,a){return $e(i).pipe(Wi(l=>this.processSegmentAgainstRoute(l._injector??e,i,l,n,r,o,s,a).pipe(Hn(c=>{if(c instanceof Ja)return k(null);throw c}))),Wn(l=>!!l),Hn(l=>{if(mD(l))return SN(n,r,o)?k(new Rg):os(n);throw l}))}processSegmentAgainstRoute(e,i,n,r,o,s,a,l){return IN(n,r,o,s)?n.redirectTo===void 0?this.matchSegmentAgainstRoute(e,r,n,o,s,l):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(e,r,i,n,o,s,l):os(r):os(r)}expandSegmentAgainstRouteUsingRedirect(e,i,n,r,o,s,a){let{matched:l,parameters:c,consumedSegments:d,positionalParamSegments:u,remainingSegments:f}=Vg(i,r,o);if(!l)return os(i);typeof r.redirectTo=="string"&&r.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>TN&&(this.allowRedirects=!1));let m=new ls(o,c,Object.freeze(w({},this.urlTree.queryParams)),this.urlTree.fragment,Gx(r),An(r),r.component??r._loadedComponent??null,r,qx(r)),p=_u(m,a,this.paramsInheritanceStrategy);m.params=Object.freeze(p.params),m.data=Object.freeze(p.data);let _=this.applyRedirects.applyRedirectCommands(d,r.redirectTo,u,m,e);return this.applyRedirects.lineralizeSegments(r,_).pipe(Ke(x=>this.processSegment(e,n,i,x.concat(f),s,!1,a)))}matchSegmentAgainstRoute(e,i,n,r,o,s){let a=yN(i,n,r,e,this.urlSerializer);return n.path==="**"&&(i.children={}),a.pipe(We(l=>l.matched?(e=n._injector??e,this.getChildConfig(e,n,r).pipe(We(({routes:c})=>{let d=n._loadedInjector??e,{parameters:u,consumedSegments:f,remainingSegments:m}=l,p=new ls(f,u,Object.freeze(w({},this.urlTree.queryParams)),this.urlTree.fragment,Gx(n),An(n),n.component??n._loadedComponent??null,n,qx(n)),_=_u(p,s,this.paramsInheritanceStrategy);p.params=Object.freeze(_.params),p.data=Object.freeze(_.data);let{segmentGroup:x,slicedSegments:I}=Wx(i,f,m,c);if(I.length===0&&x.hasChildren())return this.processChildren(d,c,x,p).pipe(N(le=>new Kt(p,le)));if(c.length===0&&I.length===0)return k(new Kt(p,[]));let V=An(n)===o;return this.processSegment(d,c,x,I,V?pe:o,!0,p).pipe(N(le=>new Kt(p,le instanceof Kt?[le]:[])))}))):os(i)))}getChildConfig(e,i,n){return i.children?k({routes:i.children,injector:e}):i.loadChildren?i._loadedRoutes!==void 0?k({routes:i._loadedRoutes,injector:i._loadedInjector}):gN(e,i,n,this.urlSerializer).pipe(Ke(r=>r?this.configLoader.loadChildren(e,i).pipe(Me(o=>{i._loadedRoutes=o.routes,i._loadedInjector=o.injector})):_N(i))):k({routes:[],injector:e})}};function AN(t){t.sort((e,i)=>e.value.outlet===pe?-1:i.value.outlet===pe?1:e.value.outlet.localeCompare(i.value.outlet))}function RN(t){let e=t.value.routeConfig;return e&&e.path===""}function gD(t){let e=[],i=new Set;for(let n of t){if(!RN(n)){e.push(n);continue}let r=e.find(o=>n.value.routeConfig===o.value.routeConfig);r!==void 0?(r.children.push(...n.children),i.add(r)):e.push(n)}for(let n of i){let r=gD(n.children);e.push(new Kt(n.value,r))}return e.filter(n=>!i.has(n))}function Gx(t){return t.data||{}}function qx(t){return t.resolve||{}}function ON(t,e,i,n,r,o){return Ke(s=>MN(t,e,i,n,s.extractedUrl,r,o).pipe(N(({state:a,tree:l})=>Z(w({},s),{targetSnapshot:a,urlAfterRedirects:l}))))}function kN(t,e){return Ke(i=>{let{targetSnapshot:n,guards:{canActivateChecks:r}}=i;if(!r.length)return k(i);let o=new Set(r.map(l=>l.route)),s=new Set;for(let l of o)if(!s.has(l))for(let c of vD(l))s.add(c);let a=0;return $e(s).pipe(Wi(l=>o.has(l)?NN(l,n,t,e):(l.data=_u(l,l.parent,t).resolve,k(void 0))),Me(()=>a++),Po(1),Ke(l=>a===s.size?k(i):_t))})}function vD(t){let e=t.children.map(i=>vD(i)).flat();return[t,...e]}function NN(t,e,i,n){let r=t.routeConfig,o=t._resolve;return r?.title!==void 0&&!dD(r)&&(o[tl]=r.title),FN(o,t,e,n).pipe(N(s=>(t._resolvedData=s,t.data=_u(t,t.parent,i).resolve,null)))}function FN(t,e,i,n){let r=lg(t);if(r.length===0)return k({});let o={};return $e(r).pipe(Ke(s=>PN(t[s],e,i,n).pipe(Wn(),Me(a=>{if(a instanceof Xa)throw wu(new Wa,a);o[s]=a}))),Po(1),oa(o),Hn(s=>mD(s)?_t:zn(s)))}function PN(t,e,i,n){let r=nl(e)??n,o=ms(t,r),s=o.resolve?o.resolve(e,i):Yt(r,()=>o(e,i));return dr(s)}function sg(t){return We(e=>{let i=t(e);return i?$e(i).pipe(N(()=>e)):k(e)})}var bD=(()=>{let e=class e{buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(s=>s.outlet===pe);return r}getResolvedTitleForRoute(n){return n.data[tl]}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(LN),providedIn:"root"});let t=e;return t})(),LN=(()=>{let e=class e extends bD{constructor(n){super(),this.title=n}updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitle(r)}};e.\u0275fac=function(r){return new(r||e)(g(Vx))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Bg=new D("",{providedIn:"root",factory:()=>({})}),zg=new D(""),jN=(()=>{let e=class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=y(Op)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return k(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let r=dr(n.loadComponent()).pipe(N(_D),Me(s=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=s}),$n(()=>{this.componentLoaders.delete(n)})),o=new Vn(r,()=>new M).pipe(So());return this.componentLoaders.set(n,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return k({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let s=VN(r,this.compiler,n,this.onLoadEndListener).pipe($n(()=>{this.childrenLoaders.delete(r)})),a=new Vn(s,()=>new M).pipe(So());return this.childrenLoaders.set(r,a),a}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function VN(t,e,i,n){return dr(t.loadChildren()).pipe(N(_D),Ke(r=>r instanceof va||Array.isArray(r)?k(r):$e(e.compileModuleAsync(r))),N(r=>{n&&n(t);let o,s,a=!1;return Array.isArray(r)?(s=r,a=!0):(o=r.create(i).injector,s=o.get(zg,[],{optional:!0,self:!0}).flat()),{routes:s.map(jg),injector:o}}))}function BN(t){return t&&typeof t=="object"&&"default"in t}function _D(t){return BN(t)?t.default:t}var Ug=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(zN),providedIn:"root"});let t=e;return t})(),zN=(()=>{let e=class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),UN=new D("");var HN=new D(""),$N=(()=>{let e=class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new M,this.transitionAbortSubject=new M,this.configLoader=y(jN),this.environmentInjector=y(Mt),this.urlSerializer=y(Ng),this.rootContexts=y(Du),this.location=y(Ai),this.inputBindingEnabled=y(Lg,{optional:!0})!==null,this.titleStrategy=y(bD),this.options=y(Bg,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=y(Ug),this.createViewTransition=y(UN,{optional:!0}),this.navigationErrorHandler=y(HN,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>k(void 0),this.rootComponentType=null;let n=o=>this.events.next(new vg(o)),r=o=>this.events.next(new bg(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=n}complete(){this.transitions?.complete()}handleNavigationRequest(n){let r=++this.navigationId;this.transitions?.next(Z(w(w({},this.transitions.value),n),{id:r}))}setupNavigations(n,r,o){return this.transitions=new rt({id:0,currentUrlTree:r,currentRawUrl:r,extractedUrl:this.urlHandlingStrategy.extract(r),urlAfterRedirects:this.urlHandlingStrategy.extract(r),rawUrl:r,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:Ha,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(ce(s=>s.id!==0),N(s=>Z(w({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),We(s=>{let a=!1,l=!1;return k(s).pipe(We(c=>{if(this.navigationId>s.id)return this.cancelNavigationTransition(s,"",Xt.SupersededByNewNavigation),_t;this.currentTransition=s,this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?Z(w({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let d=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),u=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!d&&u!=="reload"){let f="";return this.events.next(new io(c.id,this.urlSerializer.serialize(c.rawUrl),f,fg.IgnoredSameUrlNavigation)),c.resolve(!1),_t}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return k(c).pipe(We(f=>{let m=this.transitions?.getValue();return this.events.next(new Ya(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),m!==this.transitions?.getValue()?_t:Promise.resolve(f)}),ON(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),Me(f=>{s.targetSnapshot=f.targetSnapshot,s.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation=Z(w({},this.currentNavigation),{finalUrl:f.urlAfterRedirects});let m=new gu(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(m)}));if(d&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:f,extractedUrl:m,source:p,restoredState:_,extras:x}=c,I=new Ya(f,this.urlSerializer.serialize(m),p,_);this.events.next(I);let V=lD(this.rootComponentType).snapshot;return this.currentTransition=s=Z(w({},c),{targetSnapshot:V,urlAfterRedirects:m,extras:Z(w({},x),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=m,k(s)}else{let f="";return this.events.next(new io(c.id,this.urlSerializer.serialize(c.extractedUrl),f,fg.IgnoredByUrlHandlingStrategy)),c.resolve(!1),_t}}),Me(c=>{let d=new hg(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(d)}),N(c=>(this.currentTransition=s=Z(w({},c),{guards:K1(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),s)),lN(this.environmentInjector,c=>this.events.next(c)),Me(c=>{if(s.guardsResult=c.guardsResult,c.guardsResult&&typeof c.guardsResult!="boolean")throw wu(this.urlSerializer,c.guardsResult);let d=new mg(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(d)}),ce(c=>c.guardsResult?!0:(this.cancelNavigationTransition(c,"",Xt.GuardRejected),!1)),sg(c=>{if(c.guards.canActivateChecks.length)return k(c).pipe(Me(d=>{let u=new pg(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}),We(d=>{let u=!1;return k(d).pipe(kN(this.paramsInheritanceStrategy,this.environmentInjector),Me({next:()=>u=!0,complete:()=>{u||this.cancelNavigationTransition(d,"",Xt.NoDataFromResolver)}}))}),Me(d=>{let u=new gg(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}))}),sg(c=>{let d=u=>{let f=[];u.routeConfig?.loadComponent&&!u.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(u.routeConfig).pipe(Me(m=>{u.component=m}),N(()=>{})));for(let m of u.children)f.push(...d(m));return f};return ko(d(c.targetSnapshot.root)).pipe(Gi(null),Ee(1))}),sg(()=>this.afterPreactivation()),We(()=>{let{currentSnapshot:c,targetSnapshot:d}=s,u=this.createViewTransition?.(this.environmentInjector,c.root,d.root);return u?$e(u).pipe(N(()=>s)):k(s)}),N(c=>{let d=H1(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=s=Z(w({},c),{targetRouterState:d}),this.currentNavigation.targetRouterState=d,s}),Me(()=>{this.events.next(new Qa)}),Q1(this.rootContexts,n.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),Ee(1),Me({next:c=>{a=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new ki(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{a=!0}}),fe(this.transitionAbortSubject.pipe(Me(c=>{throw c}))),$n(()=>{!a&&!l&&this.cancelNavigationTransition(s,"",Xt.SupersededByNewNavigation),this.currentTransition?.id===s.id&&(this.currentNavigation=null,this.currentTransition=null)}),Hn(c=>{if(l=!0,hD(c))this.events.next(new Oi(s.id,this.urlSerializer.serialize(s.extractedUrl),c.message,c.cancellationCode)),G1(c)?this.events.next(new us(c.url,c.navigationBehaviorOptions)):s.resolve(!1);else{let d=new Za(s.id,this.urlSerializer.serialize(s.extractedUrl),c,s.targetSnapshot??void 0);try{let u=Yt(this.environmentInjector,()=>this.navigationErrorHandler?.(d));if(u instanceof Xa){let{message:f,cancellationCode:m}=wu(this.urlSerializer,u);this.events.next(new Oi(s.id,this.urlSerializer.serialize(s.extractedUrl),f,m)),this.events.next(new us(u.redirectTo,u.navigationBehaviorOptions))}else{this.events.next(d);let f=n.errorHandler(c);s.resolve(!!f)}}catch(u){this.options.resolveNavigationPromiseOnError?s.resolve(!1):s.reject(u)}}return _t}))}))}cancelNavigationTransition(n,r,o){let s=new Oi(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(s),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function WN(t){return t!==Ha}var GN=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(qN),providedIn:"root"});let t=e;return t})(),kg=class{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return e.routeConfig===i.routeConfig}},qN=(()=>{let e=class e extends kg{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),yD=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:()=>y(YN),providedIn:"root"});let t=e;return t})(),YN=(()=>{let e=class e extends yD{constructor(){super(...arguments),this.location=y(Ai),this.urlSerializer=y(Ng),this.options=y(Bg,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=y(Ug),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new cr,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=lD(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{r.type==="popstate"&&n(r.url,r.state)})}handleRouterEvent(n,r){if(n instanceof Ya)this.stateMemento=this.createStateMemento();else if(n instanceof io)this.rawUrlTree=r.initialUrl;else if(n instanceof gu){if(this.urlUpdateStrategy==="eager"&&!r.extras.skipLocationChange){let o=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl);this.setBrowserUrl(o,r)}}else n instanceof Qa?(this.currentUrlTree=r.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl),this.routerState=r.targetRouterState,this.urlUpdateStrategy==="deferred"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,r))):n instanceof Oi&&(n.code===Xt.GuardRejected||n.code===Xt.NoDataFromResolver)?this.restoreHistory(r):n instanceof Za?this.restoreHistory(r,!0):n instanceof ki&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,r){let o=this.urlSerializer.serialize(n);if(this.location.isCurrentPathEqualTo(o)||r.extras.replaceUrl){let s=this.browserPageId,a=w(w({},r.extras.state),this.generateNgRouterState(r.id,s));this.location.replaceState(o,"",a)}else{let s=w(w({},r.extras.state),this.generateNgRouterState(r.id,this.browserPageId+1));this.location.go(o,"",s)}}restoreHistory(n,r=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,s=this.currentPageId-o;s!==0?this.location.historyGo(s):this.currentUrlTree===n.finalUrl&&s===0&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r){return this.canceledNavigationResolution==="computed"?{navigationId:n,\u0275routerPageId:r}:{navigationId:n}}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),za=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(za||{});function ZN(t,e){t.events.pipe(ce(i=>i instanceof ki||i instanceof Oi||i instanceof Za||i instanceof io),N(i=>i instanceof ki||i instanceof io?za.COMPLETE:(i instanceof Oi?i.code===Xt.Redirect||i.code===Xt.SupersededByNewNavigation:!1)?za.REDIRECTING:za.FAILED),ce(i=>i!==za.REDIRECTING),Ee(1)).subscribe(()=>{e()})}function QN(t){throw t}var KN={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},XN={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},ur=(()=>{let e=class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.console=y(Pd),this.stateManager=y(yD),this.options=y(Bg,{optional:!0})||{},this.pendingTasks=y(Ci),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=y($N),this.urlSerializer=y(Ng),this.location=y(Ai),this.urlHandlingStrategy=y(Ug),this._events=new M,this.errorHandler=this.options.errorHandler||QN,this.navigated=!1,this.routeReuseStrategy=y(GN),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=y(zg,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!y(Lg,{optional:!0}),this.eventsSubscription=new ge,this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(o!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof Oi&&r.code!==Xt.Redirect&&r.code!==Xt.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof ki)this.navigated=!0;else if(r instanceof us){let a=r.navigationBehaviorOptions,l=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),c=w({info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy==="eager"||WN(o.source)},a);this.scheduleNavigation(l,Ha,null,c,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}eF(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Ha,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",r)},0)})}navigateToSyncWithBrowser(n,r,o){let s={replaceUrl:!0},a=o?.navigationId?o:null;if(o){let c=w({},o);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let l=this.parseUrl(n);this.scheduleNavigation(l,r,a,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(jg),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){let{relativeTo:o,queryParams:s,fragment:a,queryParamsHandling:l,preserveFragment:c}=r,d=c?this.currentUrlTree.fragment:a,u=null;switch(l){case"merge":u=w(w({},this.currentUrlTree.queryParams),s);break;case"preserve":u=this.currentUrlTree.queryParams;break;default:u=s||null}u!==null&&(u=this.removeEmptyProps(u));let f;try{let m=o?o.snapshot:this.routerState.snapshot.root;f=rD(m)}catch{(typeof n[0]!="string"||n[0][0]!=="/")&&(n=[]),f=this.currentUrlTree.root}return oD(f,n,u,d??null)}navigateByUrl(n,r={skipLocationChange:!1}){let o=Ga(n)?n:this.parseUrl(n),s=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(s,Ha,null,r)}navigate(n,r={skipLocationChange:!1}){return JN(n),this.navigateByUrl(this.createUrlTree(n,r),r)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.urlSerializer.parse("/")}}isActive(n,r){let o;if(r===!0?o=w({},KN):r===!1?o=w({},XN):o=r,Ga(n))return zx(this.currentUrlTree,n,o);let s=this.parseUrl(n);return zx(this.currentUrlTree,s,o)}removeEmptyProps(n){return Object.entries(n).reduce((r,[o,s])=>(s!=null&&(r[o]=s),r),{})}scheduleNavigation(n,r,o,s,a){if(this.disposed)return Promise.resolve(!1);let l,c,d;a?(l=a.resolve,c=a.reject,d=a.promise):d=new Promise((f,m)=>{l=f,c=m});let u=this.pendingTasks.add();return ZN(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(u))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:s,resolve:l,reject:c,promise:d,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),d.catch(f=>Promise.reject(f))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function JN(t){for(let e=0;ei.\u0275providers)])}function nF(t){return t.routerState.root}function iF(){let t=y(me);return e=>{let i=t.get(Zt);if(e!==i.components[0])return;let n=t.get(ur),r=t.get(rF);t.get(oF)===1&&n.initialNavigation(),t.get(sF,null,we.Optional)?.setUpPreloading(),t.get(tF,null,we.Optional)?.init(),n.resetRootComponentType(i.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}var rF=new D("",{factory:()=>new M}),oF=new D("",{providedIn:"root",factory:()=>1});var sF=new D("");var Wg;try{Wg=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Wg=!1}var ye=(()=>{let e=class e{constructor(n){this._platformId=n,this.isBrowser=this._platformId?Oa(this._platformId):typeof document=="object"&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!!(window.chrome||Wg)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}};e.\u0275fac=function(r){return new(r||e)(g(Ht))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var ps,xD=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function Gg(){if(ps)return ps;if(typeof document!="object"||!document)return ps=new Set(xD),ps;let t=document.createElement("input");return ps=new Set(xD.filter(e=>(t.setAttribute("type",e),t.type===e))),ps}var rl;function aF(){if(rl==null&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>rl=!0}))}finally{rl=rl||!1}return rl}function mn(t){return aF()?t:!!t.capture}var Rn=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(Rn||{}),Eu,ro;function Iu(){if(ro==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return ro=!1,ro;if("scrollBehavior"in document.documentElement.style)ro=!0;else{let t=Element.prototype.scrollTo;t?ro=!/\{\s*\[native code\]\s*\}/.test(t.toString()):ro=!1}}return ro}function gs(){if(typeof document!="object"||!document)return Rn.NORMAL;if(Eu==null){let t=document.createElement("div"),e=t.style;t.dir="rtl",e.width="1px",e.overflow="auto",e.visibility="hidden",e.pointerEvents="none",e.position="absolute";let i=document.createElement("div"),n=i.style;n.width="2px",n.height="1px",t.appendChild(i),document.body.appendChild(t),Eu=Rn.NORMAL,t.scrollLeft===0&&(t.scrollLeft=1,Eu=t.scrollLeft===0?Rn.NEGATED:Rn.INVERTED),t.remove()}return Eu}var $g;function lF(){if($g==null){let t=typeof document<"u"?document.head:null;$g=!!(t&&(t.createShadowRoot||t.attachShadow))}return $g}function DD(t){if(lF()){let e=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&e instanceof ShadowRoot)return e}return null}function ol(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){let e=t.shadowRoot.activeElement;if(e===t)break;t=e}return t}function Jt(t){return t.composedPath?t.composedPath()[0]:t.target}function sl(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function Ct(t,...e){return e.length?e.some(i=>t[i]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}function ri(t){return t!=null&&`${t}`!="false"}function Ni(t,e=0){return cF(t)?Number(t):e}function cF(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}function vs(t){return Array.isArray(t)?t:[t]}function st(t){return t==null?"":typeof t=="string"?t:`${t}px`}function pn(t){return t instanceof O?t.nativeElement:t}var dF=(()=>{let e=class e{create(n){return typeof MutationObserver>"u"?null:new MutationObserver(n)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var CD=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({providers:[dF]});let t=e;return t})();var ED=new Set,oo,uF=(()=>{let e=class e{constructor(n,r){this._platform=n,this._nonce=r,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):hF}matchMedia(n){return(this._platform.WEBKIT||this._platform.BLINK)&&fF(n,this._nonce),this._matchMedia(n)}};e.\u0275fac=function(r){return new(r||e)(g(ye),g(Ea,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function fF(t,e){if(!ED.has(t))try{oo||(oo=document.createElement("style"),e&&oo.setAttribute("nonce",e),oo.setAttribute("type","text/css"),document.head.appendChild(oo)),oo.sheet&&(oo.sheet.insertRule(`@media ${t} {body{ }}`,0),ED.add(t))}catch(i){console.error(i)}}function hF(t){return{matches:t==="all"||t==="",media:t,addListener:()=>{},removeListener:()=>{}}}var Su=(()=>{let e=class e{constructor(n,r){this._mediaMatcher=n,this._zone=r,this._queries=new Map,this._destroySubject=new M}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(n){return ID(vs(n)).some(o=>this._registerQuery(o).mql.matches)}observe(n){let o=ID(vs(n)).map(a=>this._registerQuery(a).observable),s=ko(o);return s=sn(s.pipe(Ee(1)),s.pipe(aa(1),ra(0))),s.pipe(N(a=>{let l={matches:!1,breakpoints:{}};return a.forEach(({matches:c,query:d})=>{l.matches=l.matches||c,l.breakpoints[d]=c}),l}))}_registerQuery(n){if(this._queries.has(n))return this._queries.get(n);let r=this._mediaMatcher.matchMedia(n),s={observable:new q(a=>{let l=c=>this._zone.run(()=>a.next(c));return r.addListener(l),()=>{r.removeListener(l)}}).pipe(yt(r),N(({matches:a})=>({query:n,matches:a})),fe(this._destroySubject)),mql:r};return this._queries.set(n,s),s}};e.\u0275fac=function(r){return new(r||e)(g(uF),g(A))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function ID(t){return t.map(e=>e.split(",")).reduce((e,i)=>e.concat(i)).map(e=>e.trim())}var SD={XSmall:"(max-width: 599.98px)",Small:"(min-width: 600px) and (max-width: 959.98px)",Medium:"(min-width: 960px) and (max-width: 1279.98px)",Large:"(min-width: 1280px) and (max-width: 1919.98px)",XLarge:"(min-width: 1920px)",Handset:"(max-width: 599.98px) and (orientation: portrait), (max-width: 959.98px) and (orientation: landscape)",Tablet:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), (min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",Web:"(min-width: 840px) and (orientation: portrait), (min-width: 1280px) and (orientation: landscape)",HandsetPortrait:"(max-width: 599.98px) and (orientation: portrait)",TabletPortrait:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)",WebPortrait:"(min-width: 840px) and (orientation: portrait)",HandsetLandscape:"(max-width: 959.98px) and (orientation: landscape)",TabletLandscape:"(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",WebLandscape:"(min-width: 1280px) and (orientation: landscape)"};var OD=" ";function Xg(t,e,i){let n=Ru(t,e);i=i.trim(),!n.some(r=>r.trim()===i)&&(n.push(i),t.setAttribute(e,n.join(OD)))}function Fu(t,e,i){let n=Ru(t,e);i=i.trim();let r=n.filter(o=>o!==i);r.length?t.setAttribute(e,r.join(OD)):t.removeAttribute(e)}function Ru(t,e){return t.getAttribute(e)?.match(/\S+/g)??[]}var kD="cdk-describedby-message",Mu="cdk-describedby-host",Zg=0,ND=(()=>{let e=class e{constructor(n,r){this._platform=r,this._messageRegistry=new Map,this._messagesContainer=null,this._id=`${Zg++}`,this._document=n,this._id=y(Ca)+"-"+Zg++}describe(n,r,o){if(!this._canBeDescribed(n,r))return;let s=qg(r,o);typeof r!="string"?(MD(r,this._id),this._messageRegistry.set(s,{messageElement:r,referenceCount:0})):this._messageRegistry.has(s)||this._createMessageElement(r,o),this._isElementDescribedByMessage(n,s)||this._addMessageReference(n,s)}removeDescription(n,r,o){if(!r||!this._isElementNode(n))return;let s=qg(r,o);if(this._isElementDescribedByMessage(n,s)&&this._removeMessageReference(n,s),typeof r=="string"){let a=this._messageRegistry.get(s);a&&a.referenceCount===0&&this._deleteMessageElement(s)}this._messagesContainer?.childNodes.length===0&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){let n=this._document.querySelectorAll(`[${Mu}="${this._id}"]`);for(let r=0;ro.indexOf(kD)!=0);n.setAttribute("aria-describedby",r.join(" "))}_addMessageReference(n,r){let o=this._messageRegistry.get(r);Xg(n,"aria-describedby",o.messageElement.id),n.setAttribute(Mu,this._id),o.referenceCount++}_removeMessageReference(n,r){let o=this._messageRegistry.get(r);o.referenceCount--,Fu(n,"aria-describedby",o.messageElement.id),n.removeAttribute(Mu)}_isElementDescribedByMessage(n,r){let o=Ru(n,"aria-describedby"),s=this._messageRegistry.get(r),a=s&&s.messageElement.id;return!!a&&o.indexOf(a)!=-1}_canBeDescribed(n,r){if(!this._isElementNode(n))return!1;if(r&&typeof r=="object")return!0;let o=r==null?"":`${r}`.trim(),s=n.getAttribute("aria-label");return o?!s||s.trim()!==o:!1}_isElementNode(n){return n.nodeType===this._document.ELEMENT_NODE}};e.\u0275fac=function(r){return new(r||e)(g(j),g(ye))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function qg(t,e){return typeof t=="string"?`${e||""}/${t}`:t}function MD(t,e){t.id||(t.id=`${kD}-${e}-${Zg++}`)}var Ou=class{constructor(e,i){this._items=e,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new M,this._typeaheadSubscription=ge.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=n=>n.disabled,this._pressedLetters=[],this.tabOut=new M,this.change=new M,e instanceof Ki?this._itemChangesSubscription=e.changes.subscribe(n=>this._itemsChanged(n.toArray())):Fd(e)&&(this._effectRef=Np(()=>this._itemsChanged(e()),{injector:i}))}skipPredicate(e){return this._skipPredicateFn=e,this}withWrap(e=!0){return this._wrap=e,this}withVerticalOrientation(e=!0){return this._vertical=e,this}withHorizontalOrientation(e){return this._horizontal=e,this}withAllowedModifierKeys(e){return this._allowedModifierKeys=e,this}withTypeAhead(e=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Me(i=>this._pressedLetters.push(i)),ra(e),ce(()=>this._pressedLetters.length>0),N(()=>this._pressedLetters.join(""))).subscribe(i=>{let n=this._getItemsArray();for(let r=1;r!e[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(i){case 9:this.tabOut.next();return;case 40:if(this._vertical&&r){this.setNextItemActive();break}else return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}else return;case 39:if(this._horizontal&&r){this._horizontal==="rtl"?this.setPreviousItemActive():this.setNextItemActive();break}else return;case 37:if(this._horizontal&&r){this._horizontal==="rtl"?this.setNextItemActive():this.setPreviousItemActive();break}else return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}else return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}else return;case 33:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}else return;case 34:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(o=65&&i<=90||i>=48&&i<=57)&&this._letterKeyStream.next(String.fromCharCode(i)));return}this._pressedLetters=[],e.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._getItemsArray().length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(e){let i=this._getItemsArray(),n=typeof e=="number"?e:i.indexOf(e),r=i[n];this._activeItem=r??null,this._activeItemIndex=n}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._effectRef?.destroy(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(e){this._wrap?this._setActiveInWrapMode(e):this._setActiveInDefaultMode(e)}_setActiveInWrapMode(e){let i=this._getItemsArray();for(let n=1;n<=i.length;n++){let r=(this._activeItemIndex+e*n+i.length)%i.length,o=i[r];if(!this._skipPredicateFn(o)){this.setActiveItem(r);return}}}_setActiveInDefaultMode(e){this._setActiveItemByIndex(this._activeItemIndex+e,e)}_setActiveItemByIndex(e,i){let n=this._getItemsArray();if(n[e]){for(;this._skipPredicateFn(n[e]);)if(e+=i,!n[e])return;this.setActiveItem(e)}}_getItemsArray(){return Fd(this._items)?this._items():this._items instanceof Ki?this._items.toArray():this._items}_itemsChanged(e){if(this._activeItem){let i=e.indexOf(this._activeItem);i>-1&&i!==this._activeItemIndex&&(this._activeItemIndex=i)}}},ku=class extends Ou{setActiveItem(e){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(e),this.activeItem&&this.activeItem.setActiveStyles()}},Nu=class extends Ou{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(e){return this._origin=e,this}setActiveItem(e){super.setActiveItem(e),this.activeItem&&this.activeItem.focus(this._origin)}};var al=(()=>{let e=class e{constructor(n){this._platform=n}isDisabled(n){return n.hasAttribute("disabled")}isVisible(n){return TF(n)&&getComputedStyle(n).visibility==="visible"}isTabbable(n){if(!this._platform.isBrowser)return!1;let r=MF(LF(n));if(r&&(TD(r)===-1||!this.isVisible(r)))return!1;let o=n.nodeName.toLowerCase(),s=TD(n);return n.hasAttribute("contenteditable")?s!==-1:o==="iframe"||o==="object"||this._platform.WEBKIT&&this._platform.IOS&&!FF(n)?!1:o==="audio"?n.hasAttribute("controls")?s!==-1:!1:o==="video"?s===-1?!1:s!==null?!0:this._platform.FIREFOX||n.hasAttribute("controls"):n.tabIndex>=0}isFocusable(n,r){return PF(n)&&!this.isDisabled(n)&&(r?.ignoreVisibility||this.isVisible(n))}};e.\u0275fac=function(r){return new(r||e)(g(ye))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function MF(t){try{return t.frameElement}catch{return null}}function TF(t){return!!(t.offsetWidth||t.offsetHeight||typeof t.getClientRects=="function"&&t.getClientRects().length)}function AF(t){let e=t.nodeName.toLowerCase();return e==="input"||e==="select"||e==="button"||e==="textarea"}function RF(t){return kF(t)&&t.type=="hidden"}function OF(t){return NF(t)&&t.hasAttribute("href")}function kF(t){return t.nodeName.toLowerCase()=="input"}function NF(t){return t.nodeName.toLowerCase()=="a"}function FD(t){if(!t.hasAttribute("tabindex")||t.tabIndex===void 0)return!1;let e=t.getAttribute("tabindex");return!!(e&&!isNaN(parseInt(e,10)))}function TD(t){if(!FD(t))return null;let e=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(e)?-1:e}function FF(t){let e=t.nodeName.toLowerCase(),i=e==="input"&&t.type;return i==="text"||i==="password"||e==="select"||e==="textarea"}function PF(t){return RF(t)?!1:AF(t)||OF(t)||t.hasAttribute("contenteditable")||FD(t)}function LF(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}var Qg=class{get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(e,this._startAnchor),this._toggleAnchorTabIndex(e,this._endAnchor))}constructor(e,i,n,r,o=!1,s){this._element=e,this._checker=i,this._ngZone=n,this._document=r,this._injector=s,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){let e=this._startAnchor,i=this._endAnchor;e&&(e.removeEventListener("focus",this.startAnchorListener),e.remove()),i&&(i.removeEventListener("focus",this.endAnchorListener),i.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusInitialElement(e)))})}focusFirstTabbableElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusFirstTabbableElement(e)))})}focusLastTabbableElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusLastTabbableElement(e)))})}_getRegionBoundary(e){let i=this._element.querySelectorAll(`[cdk-focus-region-${e}], [cdkFocusRegion${e}], [cdk-focus-${e}]`);return e=="start"?i.length?i[0]:this._getFirstTabbableElement(this._element):i.length?i[i.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(e){let i=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(i){if(!this._checker.isFocusable(i)){let n=this._getFirstTabbableElement(i);return n?.focus(e),!!n}return i.focus(e),!0}return this.focusFirstTabbableElement(e)}focusFirstTabbableElement(e){let i=this._getRegionBoundary("start");return i&&i.focus(e),!!i}focusLastTabbableElement(e){let i=this._getRegionBoundary("end");return i&&i.focus(e),!!i}hasAttached(){return this._hasAttached}_getFirstTabbableElement(e){if(this._checker.isFocusable(e)&&this._checker.isTabbable(e))return e;let i=e.children;for(let n=0;n=0;n--){let r=i[n].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(i[n]):null;if(r)return r}return null}_createAnchor(){let e=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,e),e.classList.add("cdk-visually-hidden"),e.classList.add("cdk-focus-trap-anchor"),e.setAttribute("aria-hidden","true"),e}_toggleAnchorTabIndex(e,i){e?i.setAttribute("tabindex","0"):i.removeAttribute("tabindex")}toggleAnchors(e){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(e,this._startAnchor),this._toggleAnchorTabIndex(e,this._endAnchor))}_executeOnStable(e){this._ngZone.isStable?this._injector?cn(e,{injector:this._injector}):e():this._ngZone.onStable.pipe(Ee(1)).subscribe(e)}},Pu=(()=>{let e=class e{constructor(n,r,o){this._checker=n,this._ngZone=r,this._injector=y(me),this._document=o}create(n,r=!1){return new Qg(n,this._checker,this._ngZone,this._document,r,this._injector)}};e.\u0275fac=function(r){return new(r||e)(g(al),g(A),g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function ll(t){return t.buttons===0||t.detail===0}function cl(t){let e=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!!e&&e.identifier===-1&&(e.radiusX==null||e.radiusX===1)&&(e.radiusY==null||e.radiusY===1)}var jF=new D("cdk-input-modality-detector-options"),VF={ignoreKeys:[18,17,224,91,16]},PD=650,bs=mn({passive:!0,capture:!0}),BF=(()=>{let e=class e{get mostRecentModality(){return this._modality.value}constructor(n,r,o,s){this._platform=n,this._mostRecentTarget=null,this._modality=new rt(null),this._lastTouchMs=0,this._onKeydown=a=>{this._options?.ignoreKeys?.some(l=>l===a.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Jt(a))},this._onMousedown=a=>{Date.now()-this._lastTouchMs{if(cl(a)){this._modality.next("keyboard");return}this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Jt(a)},this._options=w(w({},VF),s),this.modalityDetected=this._modality.pipe(aa(1)),this.modalityChanged=this.modalityDetected.pipe(Fo()),n.isBrowser&&r.runOutsideAngular(()=>{o.addEventListener("keydown",this._onKeydown,bs),o.addEventListener("mousedown",this._onMousedown,bs),o.addEventListener("touchstart",this._onTouchstart,bs)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,bs),document.removeEventListener("mousedown",this._onMousedown,bs),document.removeEventListener("touchstart",this._onTouchstart,bs))}};e.\u0275fac=function(r){return new(r||e)(g(ye),g(A),g(j),g(jF,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),zF=new D("liveAnnouncerElement",{providedIn:"root",factory:UF});function UF(){return null}var HF=new D("LIVE_ANNOUNCER_DEFAULT_OPTIONS"),$F=0,Lu=(()=>{let e=class e{constructor(n,r,o,s){this._ngZone=r,this._defaultOptions=s,this._document=o,this._liveElement=n||this._createLiveElement()}announce(n,...r){let o=this._defaultOptions,s,a;return r.length===1&&typeof r[0]=="number"?a=r[0]:[s,a]=r,this.clear(),clearTimeout(this._previousTimeout),s||(s=o&&o.politeness?o.politeness:"polite"),a==null&&o&&(a=o.duration),this._liveElement.setAttribute("aria-live",s),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(l=>this._currentResolve=l)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=n,typeof a=="number"&&(this._previousTimeout=setTimeout(()=>this.clear(),a)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){let n="cdk-live-announcer-element",r=this._document.getElementsByClassName(n),o=this._document.createElement("div");for(let s=0;s .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{let e=class e{constructor(n,r,o,s,a){this._ngZone=n,this._platform=r,this._inputModalityDetector=o,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new M,this._rootNodeFocusAndBlurListener=l=>{let c=Jt(l);for(let d=c;d;d=d.parentElement)l.type==="focus"?this._onFocus(l,d):this._onBlur(l,d)},this._document=s,this._detectionMode=a?.detectionMode||Au.IMMEDIATE}monitor(n,r=!1){let o=pn(n);if(!this._platform.isBrowser||o.nodeType!==1)return k();let s=DD(o)||this._getDocument(),a=this._elementInfo.get(o);if(a)return r&&(a.checkChildren=!0),a.subject;let l={checkChildren:r,subject:new M,rootNode:s};return this._elementInfo.set(o,l),this._registerGlobalListeners(l),l.subject}stopMonitoring(n){let r=pn(n),o=this._elementInfo.get(r);o&&(o.subject.complete(),this._setClasses(r),this._elementInfo.delete(r),this._removeGlobalListeners(o))}focusVia(n,r,o){let s=pn(n),a=this._getDocument().activeElement;s===a?this._getClosestElementsInfo(s).forEach(([l,c])=>this._originChanged(l,r,c)):(this._setOrigin(r),typeof s.focus=="function"&&s.focus(o))}ngOnDestroy(){this._elementInfo.forEach((n,r)=>this.stopMonitoring(r))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(n){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(n)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:n&&this._isLastInteractionFromInputLabel(n)?"mouse":"program"}_shouldBeAttributedToTouch(n){return this._detectionMode===Au.EVENTUAL||!!n?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(n,r){n.classList.toggle("cdk-focused",!!r),n.classList.toggle("cdk-touch-focused",r==="touch"),n.classList.toggle("cdk-keyboard-focused",r==="keyboard"),n.classList.toggle("cdk-mouse-focused",r==="mouse"),n.classList.toggle("cdk-program-focused",r==="program")}_setOrigin(n,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=n,this._originFromTouchInteraction=n==="touch"&&r,this._detectionMode===Au.IMMEDIATE){clearTimeout(this._originTimeoutId);let o=this._originFromTouchInteraction?PD:1;this._originTimeoutId=setTimeout(()=>this._origin=null,o)}})}_onFocus(n,r){let o=this._elementInfo.get(r),s=Jt(n);!o||!o.checkChildren&&r!==s||this._originChanged(r,this._getFocusOrigin(s),o)}_onBlur(n,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&n.relatedTarget instanceof Node&&r.contains(n.relatedTarget)||(this._setClasses(r),this._emitOrigin(o,null))}_emitOrigin(n,r){n.subject.observers.length&&this._ngZone.run(()=>n.subject.next(r))}_registerGlobalListeners(n){if(!this._platform.isBrowser)return;let r=n.rootNode,o=this._rootNodeFocusListenerCount.get(r)||0;o||this._ngZone.runOutsideAngular(()=>{r.addEventListener("focus",this._rootNodeFocusAndBlurListener,Tu),r.addEventListener("blur",this._rootNodeFocusAndBlurListener,Tu)}),this._rootNodeFocusListenerCount.set(r,o+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(fe(this._stopInputModalityDetector)).subscribe(s=>{this._setOrigin(s,!0)}))}_removeGlobalListeners(n){let r=n.rootNode;if(this._rootNodeFocusListenerCount.has(r)){let o=this._rootNodeFocusListenerCount.get(r);o>1?this._rootNodeFocusListenerCount.set(r,o-1):(r.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Tu),r.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Tu),this._rootNodeFocusListenerCount.delete(r))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(n,r,o){this._setClasses(n,r),this._emitOrigin(o,r),this._lastFocusOrigin=r}_getClosestElementsInfo(n){let r=[];return this._elementInfo.forEach((o,s)=>{(s===n||o.checkChildren&&s.contains(n))&&r.push([s,o])}),r}_isLastInteractionFromInputLabel(n){let{_mostRecentTarget:r,mostRecentModality:o}=this._inputModalityDetector;if(o!=="mouse"||!r||r===n||n.nodeName!=="INPUT"&&n.nodeName!=="TEXTAREA"||n.disabled)return!1;let s=n.labels;if(s){for(let a=0;a{let e=class e{constructor(n,r){this._platform=n,this._document=r,this._breakpointSubscription=y(Su).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return so.NONE;let n=this._document.createElement("div");n.style.backgroundColor="rgb(1,2,3)",n.style.position="absolute",this._document.body.appendChild(n);let r=this._document.defaultView||window,o=r&&r.getComputedStyle?r.getComputedStyle(n):null,s=(o&&o.backgroundColor||"").replace(/ /g,"");switch(n.remove(),s){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return so.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return so.BLACK_ON_WHITE}return so.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let n=this._document.body.classList;n.remove(Yg,AD,RD),this._hasCheckedHighContrastMode=!0;let r=this.getHighContrastMode();r===so.BLACK_ON_WHITE?n.add(Yg,AD):r===so.WHITE_ON_BLACK&&n.add(Yg,RD)}}};e.\u0275fac=function(r){return new(r||e)(g(ye),g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var GF=new D("cdk-dir-doc",{providedIn:"root",factory:qF});function qF(){return y(j)}var YF=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function ZF(t){let e=t?.toLowerCase()||"";return e==="auto"&&typeof navigator<"u"&&navigator?.language?YF.test(navigator.language)?"rtl":"ltr":e==="rtl"?"rtl":"ltr"}var bt=(()=>{let e=class e{constructor(n){if(this.value="ltr",this.change=new G,n){let r=n.body?n.body.dir:null,o=n.documentElement?n.documentElement.dir:null;this.value=ZF(r||o||"ltr")}}ngOnDestroy(){this.change.complete()}};e.\u0275fac=function(r){return new(r||e)(g(GF,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var Jg=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({});let t=e;return t})();var QF=["text"],KF=[[["mat-icon"]],"*"],XF=["mat-icon","*"];function JF(t,e){if(t&1&&ie(0,"mat-pseudo-checkbox",1),t&2){let i=$();U("disabled",i.disabled)("state",i.selected?"checked":"unchecked")}}function eP(t,e){if(t&1&&ie(0,"mat-pseudo-checkbox",3),t&2){let i=$();U("disabled",i.disabled)}}function tP(t,e){if(t&1&&(v(0,"span",4),T(1),b()),t&2){let i=$();E(),Le("(",i.group.label,")")}}function nP(){return!0}var iP=new D("mat-sanity-checks",{providedIn:"root",factory:nP}),vn=(()=>{let e=class e{constructor(n,r,o){this._sanityChecks=r,this._document=o,this._hasDoneGlobalChecks=!1,n._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(n){return sl()?!1:typeof this._sanityChecks=="boolean"?this._sanityChecks:!!this._sanityChecks[n]}};e.\u0275fac=function(r){return new(r||e)(g(LD),g(iP,8),g(j))},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[Jg,Jg]});let t=e;return t})();var Ds=class{constructor(e,i,n,r,o){this._defaultMatcher=e,this.ngControl=i,this._parentFormGroup=n,this._parentForm=r,this._stateChanges=o,this.errorState=!1}updateErrorState(){let e=this.errorState,i=this._parentFormGroup||this._parentForm,n=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=n?.isErrorState(r,i)??!1;o!==e&&(this.errorState=o,this._stateChanges.next())}};var Vu=(()=>{let e=class e{isErrorState(n,r){return!!(n&&n.invalid&&(n.touched||r&&r.submitted))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var gn=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}(gn||{}),nv=class{constructor(e,i,n,r=!1){this._renderer=e,this.element=i,this.config=n,this._animationForciblyDisabledThroughCss=r,this.state=gn.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}},jD=mn({passive:!0,capture:!0}),iv=class{constructor(){this._events=new Map,this._delegateEventHandler=e=>{let i=Jt(e);i&&this._events.get(e.type)?.forEach((n,r)=>{(r===i||r.contains(i))&&n.forEach(o=>o.handleEvent(e))})}}addHandler(e,i,n,r){let o=this._events.get(i);if(o){let s=o.get(n);s?s.add(r):o.set(n,new Set([r]))}else this._events.set(i,new Map([[n,new Set([r])]])),e.runOutsideAngular(()=>{document.addEventListener(i,this._delegateEventHandler,jD)})}removeHandler(e,i,n){let r=this._events.get(e);if(!r)return;let o=r.get(i);o&&(o.delete(n),o.size===0&&r.delete(i),r.size===0&&(this._events.delete(e),document.removeEventListener(e,this._delegateEventHandler,jD)))}},VD={enterDuration:225,exitDuration:150},rP=800,BD=mn({passive:!0,capture:!0}),zD=["mousedown","touchstart"],UD=["mouseup","mouseleave","touchend","touchcancel"],dl=class dl{constructor(e,i,n,r){this._target=e,this._ngZone=i,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=pn(n))}fadeInRipple(e,i,n={}){let r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o=w(w({},VD),n.animation);n.centered&&(e=r.left+r.width/2,i=r.top+r.height/2);let s=n.radius||oP(e,i,r),a=e-r.left,l=i-r.top,c=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=`${a-s}px`,d.style.top=`${l-s}px`,d.style.height=`${s*2}px`,d.style.width=`${s*2}px`,n.color!=null&&(d.style.backgroundColor=n.color),d.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(d);let u=window.getComputedStyle(d),f=u.transitionProperty,m=u.transitionDuration,p=f==="none"||m==="0s"||m==="0s, 0s"||r.width===0&&r.height===0,_=new nv(this,d,n,p);d.style.transform="scale3d(1, 1, 1)",_.state=gn.FADING_IN,n.persistent||(this._mostRecentTransientRipple=_);let x=null;return!p&&(c||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let I=()=>this._finishRippleTransition(_),V=()=>this._destroyRipple(_);d.addEventListener("transitionend",I),d.addEventListener("transitioncancel",V),x={onTransitionEnd:I,onTransitionCancel:V}}),this._activeRipples.set(_,x),(p||!c)&&this._finishRippleTransition(_),_}fadeOutRipple(e){if(e.state===gn.FADING_OUT||e.state===gn.HIDDEN)return;let i=e.element,n=w(w({},VD),e.config.animation);i.style.transitionDuration=`${n.exitDuration}ms`,i.style.opacity="0",e.state=gn.FADING_OUT,(e._animationForciblyDisabledThroughCss||!n.exitDuration)&&this._finishRippleTransition(e)}fadeOutAll(){this._getActiveRipples().forEach(e=>e.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(e=>{e.config.persistent||e.fadeOut()})}setupTriggerEvents(e){let i=pn(e);!this._platform.isBrowser||!i||i===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=i,zD.forEach(n=>{dl._eventManager.addHandler(this._ngZone,n,i,this)}))}handleEvent(e){e.type==="mousedown"?this._onMousedown(e):e.type==="touchstart"?this._onTouchStart(e):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{UD.forEach(i=>{this._triggerElement.addEventListener(i,this,BD)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(e){e.state===gn.FADING_IN?this._startFadeOutTransition(e):e.state===gn.FADING_OUT&&this._destroyRipple(e)}_startFadeOutTransition(e){let i=e===this._mostRecentTransientRipple,{persistent:n}=e.config;e.state=gn.VISIBLE,!n&&(!i||!this._isPointerDown)&&e.fadeOut()}_destroyRipple(e){let i=this._activeRipples.get(e)??null;this._activeRipples.delete(e),this._activeRipples.size||(this._containerRect=null),e===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),e.state=gn.HIDDEN,i!==null&&(e.element.removeEventListener("transitionend",i.onTransitionEnd),e.element.removeEventListener("transitioncancel",i.onTransitionCancel)),e.element.remove()}_onMousedown(e){let i=ll(e),n=this._lastTouchStartEvent&&Date.now(){let i=e.state===gn.VISIBLE||e.config.terminateOnPointerUp&&e.state===gn.FADING_IN;!e.config.persistent&&i&&e.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let e=this._triggerElement;e&&(zD.forEach(i=>dl._eventManager.removeHandler(i,e,this)),this._pointerUpEventsRegistered&&(UD.forEach(i=>e.removeEventListener(i,this,BD)),this._pointerUpEventsRegistered=!1))}};dl._eventManager=new iv;var rv=dl;function oP(t,e,i){let n=Math.max(Math.abs(t-i.left),Math.abs(t-i.right)),r=Math.max(Math.abs(e-i.top),Math.abs(e-i.bottom));return Math.sqrt(n*n+r*r)}var GD=new D("mat-ripple-global-options"),Bu=(()=>{let e=class e{get disabled(){return this._disabled}set disabled(n){n&&this.fadeOutAllNonPersistent(),this._disabled=n,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(n){this._trigger=n,this._setupTriggerEventsIfEnabled()}constructor(n,r,o,s,a){this._elementRef=n,this._animationMode=a,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=s||{},this._rippleRenderer=new rv(this,r,n,o)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:w(w(w({},this._globalOptions.animation),this._animationMode==="NoopAnimations"?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(n,r=0,o){return typeof n=="number"?this._rippleRenderer.fadeInRipple(n,r,w(w({},this.rippleConfig),o)):this._rippleRenderer.fadeInRipple(0,0,w(w({},this.rippleConfig),n))}};e.\u0275fac=function(r){return new(r||e)(h(O),h(A),h(ye),h(GD,8),h(ft,8))},e.\u0275dir=R({type:e,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(r,o){r&2&&xe("mat-ripple-unbounded",o.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0});let t=e;return t})();var sP=(()=>{let e=class e{constructor(n){this._animationMode=n,this.state="unchecked",this.disabled=!1,this.appearance="full"}};e.\u0275fac=function(r){return new(r||e)(h(ft,8))},e.\u0275cmp=P({type:e,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(r,o){r&2&&xe("mat-pseudo-checkbox-indeterminate",o.state==="indeterminate")("mat-pseudo-checkbox-checked",o.state==="checked")("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal",o.appearance==="minimal")("mat-pseudo-checkbox-full",o.appearance==="full")("_mat-animation-noopable",o._animationMode==="NoopAnimations")},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},standalone:!0,features:[L],decls:0,vars:0,template:function(r,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color);border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color);border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0});let t=e;return t})();var sv=new D("MAT_OPTION_PARENT_COMPONENT");var av=new D("MatOptgroup");var aP=0,ov=class{constructor(e,i=!1){this.source=e,this.isUserInput=i}},oi=(()=>{let e=class e{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(n){this._disabled=n}get disableRipple(){return!!(this._parent&&this._parent.disableRipple)}get hideSingleSelectionIndicator(){return!!(this._parent&&this._parent.hideSingleSelectionIndicator)}constructor(n,r,o,s){this._element=n,this._changeDetectorRef=r,this._parent=o,this.group=s,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id=`mat-option-${aP++}`,this.onSelectionChange=new G,this._stateChanges=new M}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(n=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),n&&this._emitSelectionChangeEvent())}deselect(n=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),n&&this._emitSelectionChangeEvent())}focus(n,r){let o=this._getHostElement();typeof o.focus=="function"&&o.focus(r)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(n){(n.keyCode===13||n.keyCode===32)&&!Ct(n)&&(this._selectViaInteraction(),n.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=this.multiple?!this._selected:!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){let n=this.viewValue;n!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=n)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(n=!1){this.onSelectionChange.emit(new ov(this,n))}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Fe),h(sv,8),h(av,8))},e.\u0275cmp=P({type:e,selectors:[["mat-option"]],viewQuery:function(r,o){if(r&1&&Ye(QF,7),r&2){let s;Q(s=K())&&(o._text=s.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(r,o){r&1&&z("click",function(){return o._selectViaInteraction()})("keydown",function(a){return o._handleKeydown(a)}),r&2&&(Jn("id",o.id),De("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),xe("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",te]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],standalone:!0,features:[Ve,L],ngContentSelectors:XF,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(r,o){r&1&&(et(KF),B(0,JF,1,2,"mat-pseudo-checkbox",1),_e(1),v(2,"span",2,0),_e(4,1),b(),B(5,eP,1,1,"mat-pseudo-checkbox",3)(6,tP,2,1,"span",4),ie(7,"div",5)),r&2&&(be(o.multiple?0:-1),E(5),be(!o.multiple&&o.selected&&!o.hideSingleSelectionIndicator?5:-1),E(),be(o.group&&o.group._inert?6:-1),E(),U("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[sP,Bu],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0});let t=e;return t})();function qD(t,e,i){if(i.length){let n=e.toArray(),r=i.toArray(),o=0;for(let s=0;si+n?Math.max(0,t-n+e):i}var HD={capture:!0},$D=["focus","mousedown","mouseenter","touchstart"],ev="mat-ripple-loader-uninitialized",tv="mat-ripple-loader-class-name",WD="mat-ripple-loader-centered",ju="mat-ripple-loader-disabled",ZD=(()=>{let e=class e{constructor(){this._document=y(j,{optional:!0}),this._animationMode=y(ft,{optional:!0}),this._globalRippleOptions=y(GD,{optional:!0}),this._platform=y(ye),this._ngZone=y(A),this._hosts=new Map,this._onInteraction=n=>{let r=Jt(n);if(r instanceof HTMLElement){let o=r.closest(`[${ev}="${this._globalRippleOptions?.namespace??""}"]`);o&&this._createRipple(o)}},this._ngZone.runOutsideAngular(()=>{for(let n of $D)this._document?.addEventListener(n,this._onInteraction,HD)})}ngOnDestroy(){let n=this._hosts.keys();for(let r of n)this.destroyRipple(r);for(let r of $D)this._document?.removeEventListener(r,this._onInteraction,HD)}configureRipple(n,r){n.setAttribute(ev,this._globalRippleOptions?.namespace??""),(r.className||!n.hasAttribute(tv))&&n.setAttribute(tv,r.className||""),r.centered&&n.setAttribute(WD,""),r.disabled&&n.setAttribute(ju,"")}getRipple(n){return this._hosts.get(n)||this._createRipple(n)}setDisabled(n,r){let o=this._hosts.get(n);if(o){o.disabled=r;return}r?n.setAttribute(ju,""):n.removeAttribute(ju)}_createRipple(n){if(!this._document)return;let r=this._hosts.get(n);if(r)return r;n.querySelector(".mat-ripple")?.remove();let o=this._document.createElement("span");o.classList.add("mat-ripple",n.getAttribute(tv)),n.append(o);let s=new Bu(new O(o),this._ngZone,this._platform,this._globalRippleOptions?this._globalRippleOptions:void 0,this._animationMode?this._animationMode:void 0);return s._isInitialized=!0,s.trigger=n,s.centered=n.hasAttribute(WD),s.disabled=n.hasAttribute(ju),this.attachRipple(n,s),s}attachRipple(n,r){n.removeAttribute(ev),this._hosts.set(n,r)}destroyRipple(n){let r=this._hosts.get(n);r&&(r.ngOnDestroy(),this._hosts.delete(n))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var cP=["mat-button",""],dP=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],uP=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"];var fP=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}";var hP=["mat-icon-button",""],mP=["*"];var pP=new D("MAT_BUTTON_CONFIG");var gP=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],KD=(()=>{let e=class e{get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(n){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,n)}get disableRipple(){return this._disableRipple}set disableRipple(n){this._disableRipple=n,this._updateRippleDisabled()}get disabled(){return this._disabled}set disabled(n){this._disabled=n,this._updateRippleDisabled()}constructor(n,r,o,s){this._elementRef=n,this._platform=r,this._ngZone=o,this._animationMode=s,this._focusMonitor=y(On),this._rippleLoader=y(ZD),this._isFab=!1,this._disableRipple=!1,this._disabled=!1;let a=y(pP,{optional:!0}),l=n.nativeElement,c=l.classList;this.disabledInteractive=a?.disabledInteractive??!1,this._rippleLoader?.configureRipple(l,{className:"mat-mdc-button-ripple"});for(let{attribute:d,mdcClasses:u}of gP)l.hasAttribute(d)&&c.add(...u)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(n="program",r){n?this._focusMonitor.focusVia(this._elementRef.nativeElement,n,r):this._elementRef.nativeElement.focus(r)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}};e.\u0275fac=function(r){vp()},e.\u0275dir=R({type:e,inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",te],disabled:[2,"disabled","disabled",te],ariaDisabled:[2,"aria-disabled","ariaDisabled",te],disabledInteractive:[2,"disabledInteractive","disabledInteractive",te]},features:[Ve]});let t=e;return t})();var $t=(()=>{let e=class e extends KD{constructor(n,r,o,s){super(n,r,o,s)}};e.\u0275fac=function(r){return new(r||e)(h(O),h(ye),h(A),h(ft,8))},e.\u0275cmp=P({type:e,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:14,hostBindings:function(r,o){r&2&&(De("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled()),dn(o.color?"mat-"+o.color:""),xe("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("_mat-animation-noopable",o._animationMode==="NoopAnimations")("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ve,L],attrs:cP,ngContentSelectors:uP,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(r,o){r&1&&(et(dP),ie(0,"span",0),_e(1),v(2,"span",1),_e(3,1),b(),_e(4,2),ie(5,"span",2)(6,"span",3)),r&2&&xe("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape);padding:0 var(--mat-text-button-horizontal-padding, 8px)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape);padding:0 var(--mat-filled-button-horizontal-padding, 16px)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width);padding:0 var(--mat-outlined-button-horizontal-padding, 15px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0});let t=e;return t})();var zu=(()=>{let e=class e extends KD{constructor(n,r,o,s){super(n,r,o,s),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}};e.\u0275fac=function(r){return new(r||e)(h(O),h(ye),h(A),h(ft,8))},e.\u0275cmp=P({type:e,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(r,o){r&2&&(De("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled()),dn(o.color?"mat-"+o.color:""),xe("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("_mat-animation-noopable",o._animationMode==="NoopAnimations")("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ve,L],attrs:hP,ngContentSelectors:mP,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(r,o){r&1&&(et(),ie(0,"span",0),_e(1),ie(2,"span",1)(3,"span",2))},styles:['.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{color:var(--mdc-icon-button-icon-color)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button{border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',fP],encapsulation:2,changeDetection:0});let t=e;return t})();var ae=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(ae||{}),si="*";function ai(t,e){return{type:ae.Trigger,name:t,definitions:e,options:{}}}function bn(t,e=null){return{type:ae.Animate,styles:e,timings:t}}function XD(t,e=null){return{type:ae.Sequence,steps:t,options:e}}function dt(t){return{type:ae.Style,styles:t,offset:null}}function li(t,e,i){return{type:ae.State,name:t,styles:e,options:i}}function tn(t,e,i=null){return{type:ae.Transition,expr:t,animation:e,options:i}}function JD(t=null){return{type:ae.AnimateChild,options:t}}function eC(t,e,i=null){return{type:ae.Query,selector:t,animation:e,options:i}}var fr=class{constructor(e=0,i=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=e+i}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(e=>e()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(e){this._position=this.totalTime?e*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(e){let i=e=="start"?this._onStartFns:this._onDoneFns;i.forEach(n=>n()),i.length=0}},ul=class{constructor(e){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=e;let i=0,n=0,r=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++i==o&&this._onFinish()}),s.onDestroy(()=>{++n==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this.players.forEach(e=>e.init())}onStart(e){this._onStartFns.push(e)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(e=>e()),this._onStartFns=[])}onDone(e){this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(e=>e.play())}pause(){this.players.forEach(e=>e.pause())}restart(){this.players.forEach(e=>e.restart())}finish(){this._onFinish(),this.players.forEach(e=>e.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(e=>e.destroy()),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}reset(){this.players.forEach(e=>e.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(e){let i=e*this.totalTime;this.players.forEach(n=>{let r=n.totalTime?Math.min(1,i/n.totalTime):1;n.setPosition(r)})}getPosition(){let e=this.players.reduce((i,n)=>i===null||n.totalTime>i.totalTime?n:i,null);return e!=null?e.getPosition():0}beforeDestroy(){this.players.forEach(e=>{e.beforeDestroy&&e.beforeDestroy()})}triggerCallback(e){let i=e=="start"?this._onStartFns:this._onDoneFns;i.forEach(n=>n()),i.length=0}},Uu="!";var fl=class{attach(e){return this._attachedHost=e,e.attach(this)}detach(){let e=this._attachedHost;e!=null&&(this._attachedHost=null,e.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(e){this._attachedHost=e}},kn=class extends fl{constructor(e,i,n,r,o){super(),this.component=e,this.viewContainerRef=i,this.injector=n,this.componentFactoryResolver=r,this.projectableNodes=o}},Nn=class extends fl{constructor(e,i,n,r){super(),this.templateRef=e,this.viewContainerRef=i,this.context=n,this.injector=r}get origin(){return this.templateRef.elementRef}attach(e,i=this.context){return this.context=i,super.attach(e)}detach(){return this.context=void 0,super.detach()}},lv=class extends fl{constructor(e){super(),this.element=e instanceof O?e.nativeElement:e}},hr=class{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(e){if(e instanceof kn)return this._attachedPortal=e,this.attachComponentPortal(e);if(e instanceof Nn)return this._attachedPortal=e,this.attachTemplatePortal(e);if(this.attachDomPortal&&e instanceof lv)return this._attachedPortal=e,this.attachDomPortal(e)}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(e){this._disposeFn=e}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}};var hl=class extends hr{constructor(e,i,n,r,o){super(),this.outletElement=e,this._componentFactoryResolver=i,this._appRef=n,this._defaultInjector=r,this.attachDomPortal=s=>{this._document;let a=s.element;a.parentNode;let l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(e){let n=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),r;return e.viewContainerRef?(r=e.viewContainerRef.createComponent(n,e.viewContainerRef.length,e.injector||e.viewContainerRef.injector,e.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=n.create(e.injector||this._defaultInjector||me.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=e,r}attachTemplatePortal(e){let i=e.viewContainerRef,n=i.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return n.rootNodes.forEach(r=>this.outletElement.appendChild(r)),n.detectChanges(),this.setDisposeFn(()=>{let r=i.indexOf(n);r!==-1&&i.remove(r)}),this._attachedPortal=e,n}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(e){return e.hostView.rootNodes[0]}};var mr=(()=>{let e=class e extends hr{constructor(n,r,o){super(),this._componentFactoryResolver=n,this._viewContainerRef=r,this._isInitialized=!1,this.attached=new G,this.attachDomPortal=s=>{this._document;let a=s.element;a.parentNode;let l=this._document.createComment("dom-portal");s.setAttachedHost(this),a.parentNode.insertBefore(l,a),this._getRootNode().appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}get portal(){return this._attachedPortal}set portal(n){this.hasAttached()&&!n&&!this._isInitialized||(this.hasAttached()&&super.detach(),n&&super.attach(n),this._attachedPortal=n||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(n){n.setAttachedHost(this);let r=n.viewContainerRef!=null?n.viewContainerRef:this._viewContainerRef,s=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component),a=r.createComponent(s,r.length,n.injector||r.injector,n.projectableNodes||void 0);return r!==this._viewContainerRef&&this._getRootNode().appendChild(a.hostView.rootNodes[0]),super.setDisposeFn(()=>a.destroy()),this._attachedPortal=n,this._attachedRef=a,this.attached.emit(a),a}attachTemplatePortal(n){n.setAttachedHost(this);let r=this._viewContainerRef.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=n,this._attachedRef=r,this.attached.emit(r),r}_getRootNode(){let n=this._viewContainerRef.element.nativeElement;return n.nodeType===n.ELEMENT_NODE?n:n.parentNode}};e.\u0275fac=function(r){return new(r||e)(h(In),h(Je),h(j))},e.\u0275dir=R({type:e,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[ve]});let t=e;return t})();function $u(t){return t&&typeof t.connect=="function"&&!(t instanceof Vn)}var Is=function(t){return t[t.REPLACED=0]="REPLACED",t[t.INSERTED=1]="INSERTED",t[t.MOVED=2]="MOVED",t[t.REMOVED=3]="REMOVED",t}(Is||{}),ml=new D("_ViewRepeater"),Ss=class{applyChanges(e,i,n,r,o){e.forEachOperation((s,a,l)=>{let c,d;if(s.previousIndex==null){let u=n(s,a,l);c=i.createEmbeddedView(u.templateRef,u.context,u.index),d=Is.INSERTED}else l==null?(i.remove(a),d=Is.REMOVED):(c=i.get(a),i.move(c,l),d=Is.MOVED);o&&o({context:c?.context,operation:d,record:s})})}detach(){}};var Hu=class{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(e=!1,i,n=!0,r){this._multiple=e,this._emitChanges=n,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new M,i&&i.length&&(e?i.forEach(o=>this._markSelected(o)):this._markSelected(i[0]),this._selectedToEmit.length=0)}select(...e){this._verifyValueAssignment(e),e.forEach(n=>this._markSelected(n));let i=this._hasQueuedChanges();return this._emitChangeEvent(),i}deselect(...e){this._verifyValueAssignment(e),e.forEach(n=>this._unmarkSelected(n));let i=this._hasQueuedChanges();return this._emitChangeEvent(),i}setSelection(...e){this._verifyValueAssignment(e);let i=this.selected,n=new Set(e);e.forEach(o=>this._markSelected(o)),i.filter(o=>!n.has(this._getConcreteValue(o,n))).forEach(o=>this._unmarkSelected(o));let r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(e){return this.isSelected(e)?this.deselect(e):this.select(e)}clear(e=!0){this._unmarkAll();let i=this._hasQueuedChanges();return e&&this._emitChangeEvent(),i}isSelected(e){return this._selection.has(this._getConcreteValue(e))}isEmpty(){return this._selection.size===0}hasValue(){return!this.isEmpty()}sort(e){this._multiple&&this.selected&&this._selected.sort(e)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(e){e=this._getConcreteValue(e),this.isSelected(e)||(this._multiple||this._unmarkAll(),this.isSelected(e)||this._selection.add(e),this._emitChanges&&this._selectedToEmit.push(e))}_unmarkSelected(e){e=this._getConcreteValue(e),this.isSelected(e)&&(this._selection.delete(e),this._emitChanges&&this._deselectedToEmit.push(e))}_unmarkAll(){this.isEmpty()||this._selection.forEach(e=>this._unmarkSelected(e))}_verifyValueAssignment(e){e.length>1&&this._multiple}_hasQueuedChanges(){return!!(this._deselectedToEmit.length||this._selectedToEmit.length)}_getConcreteValue(e,i){if(this.compareWith){i=i??this._selection;for(let n of i)if(this.compareWith(e,n))return n;return e}else return e}};var vP=20,Ms=(()=>{let e=class e{constructor(n,r,o){this._ngZone=n,this._platform=r,this._scrolled=new M,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=o}register(n){this.scrollContainers.has(n)||this.scrollContainers.set(n,n.elementScrolled().subscribe(()=>this._scrolled.next(n)))}deregister(n){let r=this.scrollContainers.get(n);r&&(r.unsubscribe(),this.scrollContainers.delete(n))}scrolled(n=vP){return this._platform.isBrowser?new q(r=>{this._globalSubscription||this._addGlobalListener();let o=n>0?this._scrolled.pipe(Dc(n)).subscribe(r):this._scrolled.subscribe(r);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):k()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((n,r)=>this.deregister(r)),this._scrolled.complete()}ancestorScrolled(n,r){let o=this.getAncestorScrollContainers(n);return this.scrolled(r).pipe(ce(s=>!s||o.indexOf(s)>-1))}getAncestorScrollContainers(n){let r=[];return this.scrollContainers.forEach((o,s)=>{this._scrollableContainsElement(s,n)&&r.push(s)}),r}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(n,r){let o=pn(r),s=n.getElementRef().nativeElement;do if(o==s)return!0;while(o=o.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{let n=this._getWindow();return Un(n.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}};e.\u0275fac=function(r){return new(r||e)(g(A),g(ye),g(j,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),cv=(()=>{let e=class e{constructor(n,r,o,s){this.elementRef=n,this.scrollDispatcher=r,this.ngZone=o,this.dir=s,this._destroyed=new M,this._elementScrolled=new q(a=>this.ngZone.runOutsideAngular(()=>Un(this.elementRef.nativeElement,"scroll").pipe(fe(this._destroyed)).subscribe(a)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(n){let r=this.elementRef.nativeElement,o=this.dir&&this.dir.value=="rtl";n.left==null&&(n.left=o?n.end:n.start),n.right==null&&(n.right=o?n.start:n.end),n.bottom!=null&&(n.top=r.scrollHeight-r.clientHeight-n.bottom),o&&gs()!=Rn.NORMAL?(n.left!=null&&(n.right=r.scrollWidth-r.clientWidth-n.left),gs()==Rn.INVERTED?n.left=n.right:gs()==Rn.NEGATED&&(n.left=n.right?-n.right:n.right)):n.right!=null&&(n.left=r.scrollWidth-r.clientWidth-n.right),this._applyScrollToOptions(n)}_applyScrollToOptions(n){let r=this.elementRef.nativeElement;Iu()?r.scrollTo(n):(n.top!=null&&(r.scrollTop=n.top),n.left!=null&&(r.scrollLeft=n.left))}measureScrollOffset(n){let r="left",o="right",s=this.elementRef.nativeElement;if(n=="top")return s.scrollTop;if(n=="bottom")return s.scrollHeight-s.clientHeight-s.scrollTop;let a=this.dir&&this.dir.value=="rtl";return n=="start"?n=a?o:r:n=="end"&&(n=a?r:o),a&&gs()==Rn.INVERTED?n==r?s.scrollWidth-s.clientWidth-s.scrollLeft:s.scrollLeft:a&&gs()==Rn.NEGATED?n==r?s.scrollLeft+s.scrollWidth-s.clientWidth:-s.scrollLeft:n==r?s.scrollLeft:s.scrollWidth-s.clientWidth-s.scrollLeft}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Ms),h(A),h(bt,8))},e.\u0275dir=R({type:e,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0});let t=e;return t})(),bP=20,pr=(()=>{let e=class e{constructor(n,r,o){this._platform=n,this._change=new M,this._changeListener=s=>{this._change.next(s)},this._document=o,r.runOutsideAngular(()=>{if(n.isBrowser){let s=this._getWindow();s.addEventListener("resize",this._changeListener),s.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){let n=this._getWindow();n.removeEventListener("resize",this._changeListener),n.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let n={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),n}getViewportRect(){let n=this.getViewportScrollPosition(),{width:r,height:o}=this.getViewportSize();return{top:n.top,left:n.left,bottom:n.top+o,right:n.left+r,height:o,width:r}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let n=this._document,r=this._getWindow(),o=n.documentElement,s=o.getBoundingClientRect(),a=-s.top||n.body.scrollTop||r.scrollY||o.scrollTop||0,l=-s.left||n.body.scrollLeft||r.scrollX||o.scrollLeft||0;return{top:a,left:l}}change(n=bP){return n>0?this._change.pipe(Dc(n)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let n=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:n.innerWidth,height:n.innerHeight}:{width:0,height:0}}};e.\u0275fac=function(r){return new(r||e)(g(ye),g(A),g(j,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var tC=Iu(),dv=class{constructor(e,i){this._viewportRuler=e,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=i}attach(){}enable(){if(this._canBeEnabled()){let e=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=e.style.left||"",this._previousHTMLStyles.top=e.style.top||"",e.style.left=st(-this._previousScrollPosition.left),e.style.top=st(-this._previousScrollPosition.top),e.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let e=this._document.documentElement,i=this._document.body,n=e.style,r=i.style,o=n.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,n.left=this._previousHTMLStyles.left,n.top=this._previousHTMLStyles.top,e.classList.remove("cdk-global-scrollblock"),tC&&(n.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),tC&&(n.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let i=this._document.body,n=this._viewportRuler.getViewportSize();return i.scrollHeight>n.height||i.scrollWidth>n.width}};var uv=class{constructor(e,i,n,r){this._scrollDispatcher=e,this._ngZone=i,this._viewportRuler=n,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(e){this._overlayRef,this._overlayRef=e}enable(){if(this._scrollSubscription)return;let e=this._scrollDispatcher.scrolled(0).pipe(ce(i=>!i||!this._overlayRef.overlayElement.contains(i.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=e.subscribe(()=>{let i=this._viewportRuler.getViewportScrollPosition().top;Math.abs(i-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=e.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},Gu=class{enable(){}disable(){}attach(){}};function fv(t,e){return e.some(i=>{let n=t.bottomi.bottom,o=t.righti.right;return n||r||o||s})}function nC(t,e){return e.some(i=>{let n=t.topi.bottom,o=t.lefti.right;return n||r||o||s})}var hv=class{constructor(e,i,n,r){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=n,this._config=r,this._scrollSubscription=null}attach(e){this._overlayRef,this._overlayRef=e}enable(){if(!this._scrollSubscription){let e=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(e).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let i=this._overlayRef.overlayElement.getBoundingClientRect(),{width:n,height:r}=this._viewportRuler.getViewportSize();fv(i,[{width:n,height:r,bottom:r,right:n,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},_P=(()=>{let e=class e{constructor(n,r,o,s){this._scrollDispatcher=n,this._viewportRuler=r,this._ngZone=o,this.noop=()=>new Gu,this.close=a=>new uv(this._scrollDispatcher,this._ngZone,this._viewportRuler,a),this.block=()=>new dv(this._viewportRuler,this._document),this.reposition=a=>new hv(this._scrollDispatcher,this._viewportRuler,this._ngZone,a),this._document=s}};e.\u0275fac=function(r){return new(r||e)(g(Ms),g(pr),g(A),g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),ci=class{constructor(e){if(this.scrollStrategy=new Gu,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,e){let i=Object.keys(e);for(let n of i)e[n]!==void 0&&(this[n]=e[n])}}};var mv=class{constructor(e,i){this.connectionPair=e,this.scrollableViewProperties=i}};var aC=(()=>{let e=class e{constructor(n){this._attachedOverlays=[],this._document=n}ngOnDestroy(){this.detach()}add(n){this.remove(n),this._attachedOverlays.push(n)}remove(n){let r=this._attachedOverlays.indexOf(n);r>-1&&this._attachedOverlays.splice(r,1),this._attachedOverlays.length===0&&this.detach()}};e.\u0275fac=function(r){return new(r||e)(g(j))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),yP=(()=>{let e=class e extends aC{constructor(n,r){super(n),this._ngZone=r,this._keydownListener=o=>{let s=this._attachedOverlays;for(let a=s.length-1;a>-1;a--)if(s[a]._keydownEvents.observers.length>0){let l=s[a]._keydownEvents;this._ngZone?this._ngZone.run(()=>l.next(o)):l.next(o);break}}}add(n){super.add(n),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}};e.\u0275fac=function(r){return new(r||e)(g(j),g(A,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),wP=(()=>{let e=class e extends aC{constructor(n,r,o){super(n),this._platform=r,this._ngZone=o,this._cursorStyleIsSet=!1,this._pointerDownListener=s=>{this._pointerDownEventTarget=Jt(s)},this._clickListener=s=>{let a=Jt(s),l=s.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:a;this._pointerDownEventTarget=null;let c=this._attachedOverlays.slice();for(let d=c.length-1;d>-1;d--){let u=c[d];if(u._outsidePointerEvents.observers.length<1||!u.hasAttached())continue;if(u.overlayElement.contains(a)||u.overlayElement.contains(l))break;let f=u._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>f.next(s)):f.next(s)}}}add(n){if(super.add(n),!this._isAttached){let r=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(r)):this._addEventListeners(r),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=r.style.cursor,r.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){let n=this._document.body;n.removeEventListener("pointerdown",this._pointerDownListener,!0),n.removeEventListener("click",this._clickListener,!0),n.removeEventListener("auxclick",this._clickListener,!0),n.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(n.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(n){n.addEventListener("pointerdown",this._pointerDownListener,!0),n.addEventListener("click",this._clickListener,!0),n.addEventListener("auxclick",this._clickListener,!0),n.addEventListener("contextmenu",this._clickListener,!0)}};e.\u0275fac=function(r){return new(r||e)(g(j),g(ye),g(A,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Ts=(()=>{let e=class e{constructor(n,r){this._platform=r,this._document=n}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let n="cdk-overlay-container";if(this._platform.isBrowser||sl()){let o=this._document.querySelectorAll(`.${n}[platform="server"], .${n}[platform="test"]`);for(let s=0;sthis._backdropClick.next(f),this._backdropTransitionendHandler=f=>{this._disposeBackdrop(f.target)},this._keydownEvents=new M,this._outsidePointerEvents=new M,this._renders=new M,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy,this._afterRenderRef=kp(()=>Ta(()=>{this._renders.next()},{injector:this._injector}))}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(e){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let i=this._portalOutlet.attach(e);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),cn(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof i?.onDestroy=="function"&&i.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),i}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let e=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),e}dispose(){let e=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,e&&this._detachments.next(),this._detachments.complete(),this._afterRenderRef.destroy(),this._renders.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(e){e!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=e,this.hasAttached()&&(e.attach(this),this.updatePosition()))}updateSize(e){this._config=w(w({},this._config),e),this._updateElementSize()}setDirection(e){this._config=Z(w({},this._config),{direction:e}),this._updateElementDirection()}addPanelClass(e){this._pane&&this._toggleClasses(this._pane,e,!0)}removePanelClass(e){this._pane&&this._toggleClasses(this._pane,e,!1)}getDirection(){let e=this._config.direction;return e?typeof e=="string"?e:e.value:"ltr"}updateScrollStrategy(e){e!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=e,this.hasAttached()&&(e.attach(this),e.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let e=this._pane.style;e.width=st(this._config.width),e.height=st(this._config.height),e.minWidth=st(this._config.minWidth),e.minHeight=st(this._config.minHeight),e.maxWidth=st(this._config.maxWidth),e.maxHeight=st(this._config.maxHeight)}_togglePointerEvents(e){this._pane.style.pointerEvents=e?"":"none"}_attachBackdrop(){let e="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(e)})}):this._backdropElement.classList.add(e)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){let e=this._backdropElement;if(e){if(this._animationsDisabled){this._disposeBackdrop(e);return}e.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{e.addEventListener("transitionend",this._backdropTransitionendHandler)}),e.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(e)},500))}}_toggleClasses(e,i,n){let r=vs(i||[]).filter(o=>!!o);r.length&&(n?e.classList.add(...r):e.classList.remove(...r))}_detachContentWhenEmpty(){this._ngZone.runOutsideAngular(()=>{let e=this._renders.pipe(fe(gt(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),e.unsubscribe())})})}_disposeScrollStrategy(){let e=this._scrollStrategy;e&&(e.disable(),e.detach&&e.detach())}_disposeBackdrop(e){e&&(e.removeEventListener("click",this._backdropClickHandler),e.removeEventListener("transitionend",this._backdropTransitionendHandler),e.remove(),this._backdropElement===e&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}},iC="cdk-overlay-connected-position-bounding-box",xP=/([A-Za-z%]+)$/,pv=class{get positions(){return this._preferredPositions}constructor(e,i,n,r,o){this._viewportRuler=i,this._document=n,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new M,this._resizeSubscription=ge.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(e)}attach(e){this._overlayRef&&this._overlayRef,this._validatePositions(),e.hostElement.classList.add(iC),this._overlayRef=e,this._boundingBox=e.hostElement,this._pane=e.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let e=this._originRect,i=this._overlayRect,n=this._viewportRect,r=this._containerRect,o=[],s;for(let a of this._preferredPositions){let l=this._getOriginPoint(e,r,a),c=this._getOverlayPoint(l,i,a),d=this._getOverlayFit(c,i,n,a);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(a,l);return}if(this._canFitWithFlexibleDimensions(d,c,n)){o.push({position:a,origin:l,overlayRect:i,boundingBoxRect:this._calculateBoundingBoxRect(l,a)});continue}(!s||s.overlayFit.visibleAreal&&(l=d,a=c)}this._isPushed=!1,this._applyPosition(a.position,a.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(s.position,s.originPoint);return}this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&co(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(iC),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let e=this._lastPosition;if(e){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let i=this._getOriginPoint(this._originRect,this._containerRect,e);this._applyPosition(e,i)}else this.apply()}withScrollableContainers(e){return this._scrollables=e,this}withPositions(e){return this._preferredPositions=e,e.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(e){return this._viewportMargin=e,this}withFlexibleDimensions(e=!0){return this._hasFlexibleDimensions=e,this}withGrowAfterOpen(e=!0){return this._growAfterOpen=e,this}withPush(e=!0){return this._canPush=e,this}withLockedPosition(e=!0){return this._positionLocked=e,this}setOrigin(e){return this._origin=e,this}withDefaultOffsetX(e){return this._offsetX=e,this}withDefaultOffsetY(e){return this._offsetY=e,this}withTransformOriginOn(e){return this._transformOriginSelector=e,this}_getOriginPoint(e,i,n){let r;if(n.originX=="center")r=e.left+e.width/2;else{let s=this._isRtl()?e.right:e.left,a=this._isRtl()?e.left:e.right;r=n.originX=="start"?s:a}i.left<0&&(r-=i.left);let o;return n.originY=="center"?o=e.top+e.height/2:o=n.originY=="top"?e.top:e.bottom,i.top<0&&(o-=i.top),{x:r,y:o}}_getOverlayPoint(e,i,n){let r;n.overlayX=="center"?r=-i.width/2:n.overlayX==="start"?r=this._isRtl()?-i.width:0:r=this._isRtl()?0:-i.width;let o;return n.overlayY=="center"?o=-i.height/2:o=n.overlayY=="top"?0:-i.height,{x:e.x+r,y:e.y+o}}_getOverlayFit(e,i,n,r){let o=oC(i),{x:s,y:a}=e,l=this._getOffset(r,"x"),c=this._getOffset(r,"y");l&&(s+=l),c&&(a+=c);let d=0-s,u=s+o.width-n.width,f=0-a,m=a+o.height-n.height,p=this._subtractOverflows(o.width,d,u),_=this._subtractOverflows(o.height,f,m),x=p*_;return{visibleArea:x,isCompletelyWithinViewport:o.width*o.height===x,fitsInViewportVertically:_===o.height,fitsInViewportHorizontally:p==o.width}}_canFitWithFlexibleDimensions(e,i,n){if(this._hasFlexibleDimensions){let r=n.bottom-i.y,o=n.right-i.x,s=rC(this._overlayRef.getConfig().minHeight),a=rC(this._overlayRef.getConfig().minWidth),l=e.fitsInViewportVertically||s!=null&&s<=r,c=e.fitsInViewportHorizontally||a!=null&&a<=o;return l&&c}return!1}_pushOverlayOnScreen(e,i,n){if(this._previousPushAmount&&this._positionLocked)return{x:e.x+this._previousPushAmount.x,y:e.y+this._previousPushAmount.y};let r=oC(i),o=this._viewportRect,s=Math.max(e.x+r.width-o.width,0),a=Math.max(e.y+r.height-o.height,0),l=Math.max(o.top-n.top-e.y,0),c=Math.max(o.left-n.left-e.x,0),d=0,u=0;return r.width<=o.width?d=c||-s:d=e.xp&&!this._isInitialRender&&!this._growAfterOpen&&(s=e.y-p/2)}let l=i.overlayX==="start"&&!r||i.overlayX==="end"&&r,c=i.overlayX==="end"&&!r||i.overlayX==="start"&&r,d,u,f;if(c)f=n.width-e.x+this._viewportMargin*2,d=e.x-this._viewportMargin;else if(l)u=e.x,d=n.right-e.x;else{let m=Math.min(n.right-e.x+n.left,e.x),p=this._lastBoundingBoxSize.width;d=m*2,u=e.x-m,d>p&&!this._isInitialRender&&!this._growAfterOpen&&(u=e.x-p/2)}return{top:s,left:u,bottom:a,right:f,width:d,height:o}}_setBoundingBoxStyles(e,i){let n=this._calculateBoundingBoxRect(e,i);!this._isInitialRender&&!this._growAfterOpen&&(n.height=Math.min(n.height,this._lastBoundingBoxSize.height),n.width=Math.min(n.width,this._lastBoundingBoxSize.width));let r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{let o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=st(n.height),r.top=st(n.top),r.bottom=st(n.bottom),r.width=st(n.width),r.left=st(n.left),r.right=st(n.right),i.overlayX==="center"?r.alignItems="center":r.alignItems=i.overlayX==="end"?"flex-end":"flex-start",i.overlayY==="center"?r.justifyContent="center":r.justifyContent=i.overlayY==="bottom"?"flex-end":"flex-start",o&&(r.maxHeight=st(o)),s&&(r.maxWidth=st(s))}this._lastBoundingBoxSize=n,co(this._boundingBox.style,r)}_resetBoundingBoxStyles(){co(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){co(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(e,i){let n={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){let d=this._viewportRuler.getViewportScrollPosition();co(n,this._getExactOverlayY(i,e,d)),co(n,this._getExactOverlayX(i,e,d))}else n.position="static";let a="",l=this._getOffset(i,"x"),c=this._getOffset(i,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),n.transform=a.trim(),s.maxHeight&&(r?n.maxHeight=st(s.maxHeight):o&&(n.maxHeight="")),s.maxWidth&&(r?n.maxWidth=st(s.maxWidth):o&&(n.maxWidth="")),co(this._pane.style,n)}_getExactOverlayY(e,i,n){let r={top:"",bottom:""},o=this._getOverlayPoint(i,this._overlayRect,e);if(this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,n)),e.overlayY==="bottom"){let s=this._document.documentElement.clientHeight;r.bottom=`${s-(o.y+this._overlayRect.height)}px`}else r.top=st(o.y);return r}_getExactOverlayX(e,i,n){let r={left:"",right:""},o=this._getOverlayPoint(i,this._overlayRect,e);this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,n));let s;if(this._isRtl()?s=e.overlayX==="end"?"left":"right":s=e.overlayX==="end"?"right":"left",s==="right"){let a=this._document.documentElement.clientWidth;r.right=`${a-(o.x+this._overlayRect.width)}px`}else r.left=st(o.x);return r}_getScrollVisibility(){let e=this._getOriginRect(),i=this._pane.getBoundingClientRect(),n=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:nC(e,n),isOriginOutsideView:fv(e,n),isOverlayClipped:nC(i,n),isOverlayOutsideView:fv(i,n)}}_subtractOverflows(e,...i){return i.reduce((n,r)=>n-Math.max(r,0),e)}_getNarrowedViewportRect(){let e=this._document.documentElement.clientWidth,i=this._document.documentElement.clientHeight,n=this._viewportRuler.getViewportScrollPosition();return{top:n.top+this._viewportMargin,left:n.left+this._viewportMargin,right:n.left+e-this._viewportMargin,bottom:n.top+i-this._viewportMargin,width:e-2*this._viewportMargin,height:i-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(e,i){return i==="x"?e.offsetX==null?this._offsetX:e.offsetX:e.offsetY==null?this._offsetY:e.offsetY}_validatePositions(){}_addPanelClasses(e){this._pane&&vs(e).forEach(i=>{i!==""&&this._appliedPanelClasses.indexOf(i)===-1&&(this._appliedPanelClasses.push(i),this._pane.classList.add(i))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(e=>{this._pane.classList.remove(e)}),this._appliedPanelClasses=[])}_getOriginRect(){let e=this._origin;if(e instanceof O)return e.nativeElement.getBoundingClientRect();if(e instanceof Element)return e.getBoundingClientRect();let i=e.width||0,n=e.height||0;return{top:e.y,bottom:e.y+n,left:e.x,right:e.x+i,height:n,width:i}}};function co(t,e){for(let i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function rC(t){if(typeof t!="number"&&t!=null){let[e,i]=t.split(xP);return!i||i==="px"?parseFloat(e):null}return t||null}function oC(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}function DP(t,e){return t===e?!0:t.isOriginClipped===e.isOriginClipped&&t.isOriginOutsideView===e.isOriginOutsideView&&t.isOverlayClipped===e.isOverlayClipped&&t.isOverlayOutsideView===e.isOverlayOutsideView}var sC="cdk-global-overlay-wrapper",gv=class{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(e){let i=e.getConfig();this._overlayRef=e,this._width&&!i.width&&e.updateSize({width:this._width}),this._height&&!i.height&&e.updateSize({height:this._height}),e.hostElement.classList.add(sC),this._isDisposed=!1}top(e=""){return this._bottomOffset="",this._topOffset=e,this._alignItems="flex-start",this}left(e=""){return this._xOffset=e,this._xPosition="left",this}bottom(e=""){return this._topOffset="",this._bottomOffset=e,this._alignItems="flex-end",this}right(e=""){return this._xOffset=e,this._xPosition="right",this}start(e=""){return this._xOffset=e,this._xPosition="start",this}end(e=""){return this._xOffset=e,this._xPosition="end",this}width(e=""){return this._overlayRef?this._overlayRef.updateSize({width:e}):this._width=e,this}height(e=""){return this._overlayRef?this._overlayRef.updateSize({height:e}):this._height=e,this}centerHorizontally(e=""){return this.left(e),this._xPosition="center",this}centerVertically(e=""){return this.top(e),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let e=this._overlayRef.overlayElement.style,i=this._overlayRef.hostElement.style,n=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:a}=n,l=(r==="100%"||r==="100vw")&&(!s||s==="100%"||s==="100vw"),c=(o==="100%"||o==="100vh")&&(!a||a==="100%"||a==="100vh"),d=this._xPosition,u=this._xOffset,f=this._overlayRef.getConfig().direction==="rtl",m="",p="",_="";l?_="flex-start":d==="center"?(_="center",f?p=u:m=u):f?d==="left"||d==="end"?(_="flex-end",m=u):(d==="right"||d==="start")&&(_="flex-start",p=u):d==="left"||d==="start"?(_="flex-start",m=u):(d==="right"||d==="end")&&(_="flex-end",p=u),e.position=this._cssPosition,e.marginLeft=l?"0":m,e.marginTop=c?"0":this._topOffset,e.marginBottom=this._bottomOffset,e.marginRight=l?"0":p,i.justifyContent=_,i.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let e=this._overlayRef.overlayElement.style,i=this._overlayRef.hostElement,n=i.style;i.classList.remove(sC),n.justifyContent=n.alignItems=e.marginTop=e.marginBottom=e.marginLeft=e.marginRight=e.position="",this._overlayRef=null,this._isDisposed=!0}},CP=(()=>{let e=class e{constructor(n,r,o,s){this._viewportRuler=n,this._document=r,this._platform=o,this._overlayContainer=s}global(){return new gv}flexibleConnectedTo(n){return new pv(n,this._viewportRuler,this._document,this._platform,this._overlayContainer)}};e.\u0275fac=function(r){return new(r||e)(g(pr),g(j),g(ye),g(Ts))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),EP=0,nt=(()=>{let e=class e{constructor(n,r,o,s,a,l,c,d,u,f,m,p){this.scrollStrategies=n,this._overlayContainer=r,this._componentFactoryResolver=o,this._positionBuilder=s,this._keyboardDispatcher=a,this._injector=l,this._ngZone=c,this._document=d,this._directionality=u,this._location=f,this._outsideClickDispatcher=m,this._animationsModuleType=p}create(n){let r=this._createHostElement(),o=this._createPaneElement(r),s=this._createPortalOutlet(o),a=new ci(n);return a.direction=a.direction||this._directionality.value,new Fi(s,r,o,a,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,this._animationsModuleType==="NoopAnimations",this._injector.get(Mt))}position(){return this._positionBuilder}_createPaneElement(n){let r=this._document.createElement("div");return r.id=`cdk-overlay-${EP++}`,r.classList.add("cdk-overlay-pane"),n.appendChild(r),r}_createHostElement(){let n=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalOutlet(n){return this._appRef||(this._appRef=this._injector.get(Zt)),new hl(n,this._componentFactoryResolver,this._appRef,this._injector,this._document)}};e.\u0275fac=function(r){return new(r||e)(g(_P),g(Ts),g(In),g(CP),g(yP),g(me),g(A),g(j),g(bt),g(Ai),g(wP),g(ft,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),IP=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],SP=new D("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.reposition()}}),pl=(()=>{let e=class e{constructor(n){this.elementRef=n}};e.\u0275fac=function(r){return new(r||e)(h(O))},e.\u0275dir=R({type:e,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0});let t=e;return t})(),bv=(()=>{let e=class e{get offsetX(){return this._offsetX}set offsetX(n){this._offsetX=n,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(n){this._offsetY=n,this._position&&this._updatePositionStrategy(this._position)}get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(n){this._disposeOnNavigation=n}constructor(n,r,o,s,a){this._overlay=n,this._dir=a,this._backdropSubscription=ge.EMPTY,this._attachSubscription=ge.EMPTY,this._detachSubscription=ge.EMPTY,this._positionSubscription=ge.EMPTY,this._disposeOnNavigation=!1,this._ngZone=y(A),this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.hasBackdrop=!1,this.lockPosition=!1,this.flexibleDimensions=!1,this.growAfterOpen=!1,this.push=!1,this.backdropClick=new G,this.positionChange=new G,this.attach=new G,this.detach=new G,this.overlayKeydown=new G,this.overlayOutsideClick=new G,this._templatePortal=new Nn(r,o),this._scrollStrategyFactory=s,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(n){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),n.origin&&this.open&&this._position.apply()),n.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=IP);let n=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=n.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=n.detachments().subscribe(()=>this.detach.emit()),n.keydownEvents().subscribe(r=>{this.overlayKeydown.next(r),r.keyCode===27&&!this.disableClose&&!Ct(r)&&(r.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(r=>{let o=this._getOriginElement(),s=Jt(r);(!o||o!==s&&!o.contains(s))&&this.overlayOutsideClick.next(r)})}_buildConfig(){let n=this._position=this.positionStrategy||this._createPositionStrategy(),r=new ci({direction:this._dir,positionStrategy:n,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||this.width===0)&&(r.width=this.width),(this.height||this.height===0)&&(r.height=this.height),(this.minWidth||this.minWidth===0)&&(r.minWidth=this.minWidth),(this.minHeight||this.minHeight===0)&&(r.minHeight=this.minHeight),this.backdropClass&&(r.backdropClass=this.backdropClass),this.panelClass&&(r.panelClass=this.panelClass),r}_updatePositionStrategy(n){let r=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return n.setOrigin(this._getOrigin()).withPositions(r).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){let n=this._overlay.position().flexibleConnectedTo(this._getOrigin());return this._updatePositionStrategy(n),n}_getOrigin(){return this.origin instanceof pl?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof pl?this.origin.elementRef.nativeElement:this.origin instanceof O?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(n=>{this.backdropClick.emit(n)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(wh(()=>this.positionChange.observers.length>0)).subscribe(n=>{this._ngZone.run(()=>this.positionChange.emit(n)),this.positionChange.observers.length===0&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}};e.\u0275fac=function(r){return new(r||e)(h(nt),h(Ge),h(Je),h(SP),h(bt,8))},e.\u0275dir=R({type:e,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",te],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",te],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",te],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",te],push:[2,"cdkConnectedOverlayPush","push",te],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",te]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[Ve,Xe]});let t=e;return t})();function TP(t,e){if(t&1){let i=lt();v(0,"div",1)(1,"button",2),z("click",function(){Te(i);let r=$();return Ae(r.action())}),T(2),b()()}if(t&2){let i=$();E(2),Le(" ",i.data.action," ")}}var AP=["label"];function RP(t,e){}var OP=Math.pow(2,31)-1,vl=class{constructor(e,i){this._overlayRef=i,this._afterDismissed=new M,this._afterOpened=new M,this._onAction=new M,this._dismissedByAction=!1,this.containerInstance=e,e._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(e){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(e,OP))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},ht=new D("MatSnackBarData"),As=class{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}},kP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"],standalone:!0});let t=e;return t})(),NP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"],standalone:!0});let t=e;return t})(),FP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"],standalone:!0});let t=e;return t})(),PP=(()=>{let e=class e{constructor(n,r){this.snackBarRef=n,this.data=r}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}};e.\u0275fac=function(r){return new(r||e)(h(vl),h(ht))},e.\u0275cmp=P({type:e,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],standalone:!0,features:[L],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(r,o){r&1&&(v(0,"div",0),T(1),b(),B(2,TP,3,1,"div",1)),r&2&&(E(),Le(" ",o.data.message,` +`),E(),be(o.hasAction?2:-1))},dependencies:[$t,kP,NP,FP],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0});let t=e;return t})(),LP={snackBarState:ai("state",[li("void, hidden",dt({transform:"scale(0.8)",opacity:0})),li("visible",dt({transform:"scale(1)",opacity:1})),tn("* => visible",bn("150ms cubic-bezier(0, 0, 0.2, 1)")),tn("* => void, * => hidden",bn("75ms cubic-bezier(0.4, 0.0, 1, 1)",dt({opacity:0})))])},jP=0,VP=(()=>{let e=class e extends hr{constructor(n,r,o,s,a){super(),this._ngZone=n,this._elementRef=r,this._changeDetectorRef=o,this._platform=s,this.snackBarConfig=a,this._document=y(j),this._trackedModals=new Set,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new M,this._onExit=new M,this._onEnter=new M,this._animationState="void",this._liveElementId=`mat-snack-bar-container-live-${jP++}`,this.attachDomPortal=l=>{this._assertNotAttached();let c=this._portalOutlet.attachDomPortal(l);return this._afterPortalAttached(),c},a.politeness==="assertive"&&!a.announcementMessage?this._live="assertive":a.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(n){this._assertNotAttached();let r=this._portalOutlet.attachComponentPortal(n);return this._afterPortalAttached(),r}attachTemplatePortal(n){this._assertNotAttached();let r=this._portalOutlet.attachTemplatePortal(n);return this._afterPortalAttached(),r}onAnimationEnd(n){let{fromState:r,toState:o}=n;if((o==="void"&&r!=="void"||o==="hidden")&&this._completeExit(),o==="visible"){let s=this._onEnter;this._ngZone.run(()=>{s.next(),s.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let n=this._elementRef.nativeElement,r=this.snackBarConfig.panelClass;r&&(Array.isArray(r)?r.forEach(a=>n.classList.add(a)):n.classList.add(r)),this._exposeToModals();let o=this._label.nativeElement,s="mdc-snackbar__label";o.classList.toggle(s,!o.querySelector(`.${s}`))}_exposeToModals(){let n=this._liveElementId,r=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{let r=n.getAttribute("aria-owns");if(r){let o=r.replace(this._liveElementId,"").trim();o.length>0?n.setAttribute("aria-owns",o):n.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{let n=this._elementRef.nativeElement.querySelector("[aria-hidden]"),r=this._elementRef.nativeElement.querySelector("[aria-live]");if(n&&r){let o=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&n.contains(document.activeElement)&&(o=document.activeElement),n.removeAttribute("aria-hidden"),r.appendChild(n),o?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}};e.\u0275fac=function(r){return new(r||e)(h(A),h(O),h(Fe),h(ye),h(As))},e.\u0275cmp=P({type:e,selectors:[["mat-snack-bar-container"]],viewQuery:function(r,o){if(r&1&&(Ye(mr,7),Ye(AP,7)),r&2){let s;Q(s=K())&&(o._portalOutlet=s.first),Q(s=K())&&(o._label=s.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:1,hostBindings:function(r,o){r&1&&Ap("@state.done",function(a){return o.onAnimationEnd(a)}),r&2&&Tp("@state",o._animationState)},standalone:!0,features:[ve,L],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(r,o){r&1&&(v(0,"div",1)(1,"div",2,0)(3,"div",3),B(4,RP,0,0,"ng-template",4),b(),ie(5,"div"),b()()),r&2&&(E(5),De("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[mr],styles:[".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}.cdk-high-contrast-active .mat-mdc-snackbar-surface{outline:solid 1px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color);border-radius:var(--mdc-snackbar-container-shape);background-color:var(--mdc-snackbar-container-color)}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font);font-size:var(--mdc-snackbar-supporting-text-size);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}"],encapsulation:2,data:{animation:[LP.snackBarState]}});let t=e;return t})();function BP(){return new As}var zP=new D("mat-snack-bar-default-options",{providedIn:"root",factory:BP}),lC=(()=>{let e=class e{get _openedSnackBarRef(){let n=this._parentSnackBar;return n?n._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(n){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=n:this._snackBarRefAtThisLevel=n}constructor(n,r,o,s,a,l){this._overlay=n,this._live=r,this._injector=o,this._breakpointObserver=s,this._parentSnackBar=a,this._defaultConfig=l,this._snackBarRefAtThisLevel=null,this.simpleSnackBarComponent=PP,this.snackBarContainerComponent=VP,this.handsetCssClass="mat-mdc-snack-bar-handset"}openFromComponent(n,r){return this._attach(n,r)}openFromTemplate(n,r){return this._attach(n,r)}open(n,r="",o){let s=w(w({},this._defaultConfig),o);return s.data={message:n,action:r},s.announcementMessage===n&&(s.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,s)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(n,r){let o=r&&r.viewContainerRef&&r.viewContainerRef.injector,s=me.create({parent:o||this._injector,providers:[{provide:As,useValue:r}]}),a=new kn(this.snackBarContainerComponent,r.viewContainerRef,s),l=n.attach(a);return l.instance.snackBarConfig=r,l.instance}_attach(n,r){let o=w(w(w({},new As),this._defaultConfig),r),s=this._createOverlay(o),a=this._attachSnackBarContainer(s,o),l=new vl(a,s);if(n instanceof Ge){let c=new Nn(n,null,{$implicit:o.data,snackBarRef:l});l.instance=a.attachTemplatePortal(c)}else{let c=this._createInjector(o,l),d=new kn(n,void 0,c),u=a.attachComponentPortal(d);l.instance=u.instance}return this._breakpointObserver.observe(SD.HandsetPortrait).pipe(fe(s.detachments())).subscribe(c=>{s.overlayElement.classList.toggle(this.handsetCssClass,c.matches)}),o.announcementMessage&&a._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(l,o),this._openedSnackBarRef=l,this._openedSnackBarRef}_animateSnackBar(n,r){n.afterDismissed().subscribe(()=>{this._openedSnackBarRef==n&&(this._openedSnackBarRef=null),r.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{n.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):n.containerInstance.enter(),r.duration&&r.duration>0&&n.afterOpened().subscribe(()=>n._dismissAfter(r.duration))}_createOverlay(n){let r=new ci;r.direction=n.direction;let o=this._overlay.position().global(),s=n.direction==="rtl",a=n.horizontalPosition==="left"||n.horizontalPosition==="start"&&!s||n.horizontalPosition==="end"&&s,l=!a&&n.horizontalPosition!=="center";return a?o.left("0"):l?o.right("0"):o.centerHorizontally(),n.verticalPosition==="top"?o.top("0"):o.bottom("0"),r.positionStrategy=o,this._overlay.create(r)}_createInjector(n,r){let o=n&&n.viewContainerRef&&n.viewContainerRef.injector;return me.create({parent:o||this._injector,providers:[{provide:vl,useValue:r},{provide:ht,useValue:n.data}]})}};e.\u0275fac=function(r){return new(r||e)(g(nt),g(Lu),g(me),g(Su),g(e,12),g(zP))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var HP=["*"],qu;function $P(){if(qu===void 0&&(qu=null,typeof window<"u")){let t=window;t.trustedTypes!==void 0&&(qu=t.trustedTypes.createPolicy("angular#components",{createHTML:e=>e}))}return qu}function _l(t){return $P()?.createHTML(t)||t}function cC(t){return Error(`Unable to find icon with the name "${t}"`)}function WP(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function dC(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function uC(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}var Li=class{constructor(e,i,n){this.url=e,this.svgText=i,this.options=n}},GP=(()=>{let e=class e{constructor(n,r,o,s){this._httpClient=n,this._sanitizer=r,this._errorHandler=s,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=o}addSvgIcon(n,r,o){return this.addSvgIconInNamespace("",n,r,o)}addSvgIconLiteral(n,r,o){return this.addSvgIconLiteralInNamespace("",n,r,o)}addSvgIconInNamespace(n,r,o,s){return this._addSvgIconConfig(n,r,new Li(o,null,s))}addSvgIconResolver(n){return this._resolvers.push(n),this}addSvgIconLiteralInNamespace(n,r,o,s){let a=this._sanitizer.sanitize(kt.HTML,o);if(!a)throw uC(o);let l=_l(a);return this._addSvgIconConfig(n,r,new Li("",l,s))}addSvgIconSet(n,r){return this.addSvgIconSetInNamespace("",n,r)}addSvgIconSetLiteral(n,r){return this.addSvgIconSetLiteralInNamespace("",n,r)}addSvgIconSetInNamespace(n,r,o){return this._addSvgIconSetConfig(n,new Li(r,null,o))}addSvgIconSetLiteralInNamespace(n,r,o){let s=this._sanitizer.sanitize(kt.HTML,r);if(!s)throw uC(r);let a=_l(s);return this._addSvgIconSetConfig(n,new Li("",a,o))}registerFontClassAlias(n,r=n){return this._fontCssClassesByAlias.set(n,r),this}classNameForFontAlias(n){return this._fontCssClassesByAlias.get(n)||n}setDefaultFontSetClass(...n){return this._defaultFontSetClass=n,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(n){let r=this._sanitizer.sanitize(kt.RESOURCE_URL,n);if(!r)throw dC(n);let o=this._cachedIconsByUrl.get(r);return o?k(Yu(o)):this._loadSvgIconFromConfig(new Li(n,null)).pipe(Me(s=>this._cachedIconsByUrl.set(r,s)),N(s=>Yu(s)))}getNamedSvgIcon(n,r=""){let o=fC(r,n),s=this._svgIconConfigs.get(o);if(s)return this._getSvgFromConfig(s);if(s=this._getIconConfigFromResolvers(r,n),s)return this._svgIconConfigs.set(o,s),this._getSvgFromConfig(s);let a=this._iconSetConfigs.get(r);return a?this._getSvgFromIconSetConfigs(n,a):zn(cC(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(n){return n.svgText?k(Yu(this._svgElementFromConfig(n))):this._loadSvgIconFromConfig(n).pipe(N(r=>Yu(r)))}_getSvgFromIconSetConfigs(n,r){let o=this._extractIconWithNameFromAnySet(n,r);if(o)return k(o);let s=r.filter(a=>!a.svgText).map(a=>this._loadSvgIconSetFromConfig(a).pipe(Hn(l=>{let d=`Loading icon set URL: ${this._sanitizer.sanitize(kt.RESOURCE_URL,a.url)} failed: ${l.message}`;return this._errorHandler.handleError(new Error(d)),k(null)})));return ia(s).pipe(N(()=>{let a=this._extractIconWithNameFromAnySet(n,r);if(!a)throw cC(n);return a}))}_extractIconWithNameFromAnySet(n,r){for(let o=r.length-1;o>=0;o--){let s=r[o];if(s.svgText&&s.svgText.toString().indexOf(n)>-1){let a=this._svgElementFromConfig(s),l=this._extractSvgIconFromSet(a,n,s.options);if(l)return l}}return null}_loadSvgIconFromConfig(n){return this._fetchIcon(n).pipe(Me(r=>n.svgText=r),N(()=>this._svgElementFromConfig(n)))}_loadSvgIconSetFromConfig(n){return n.svgText?k(null):this._fetchIcon(n).pipe(Me(r=>n.svgText=r))}_extractSvgIconFromSet(n,r,o){let s=n.querySelector(`[id="${r}"]`);if(!s)return null;let a=s.cloneNode(!0);if(a.removeAttribute("id"),a.nodeName.toLowerCase()==="svg")return this._setSvgAttributes(a,o);if(a.nodeName.toLowerCase()==="symbol")return this._setSvgAttributes(this._toSvgElement(a),o);let l=this._svgElementFromString(_l(""));return l.appendChild(a),this._setSvgAttributes(l,o)}_svgElementFromString(n){let r=this._document.createElement("DIV");r.innerHTML=n;let o=r.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(n){let r=this._svgElementFromString(_l("")),o=n.attributes;for(let s=0;s_l(d)),$n(()=>this._inProgressUrlFetches.delete(a)),sa());return this._inProgressUrlFetches.set(a,c),c}_addSvgIconConfig(n,r,o){return this._svgIconConfigs.set(fC(n,r),o),this}_addSvgIconSetConfig(n,r){let o=this._iconSetConfigs.get(n);return o?o.push(r):this._iconSetConfigs.set(n,[r]),this}_svgElementFromConfig(n){if(!n.svgElement){let r=this._svgElementFromString(n.svgText);this._setSvgAttributes(r,n.options),n.svgElement=r}return n.svgElement}_getIconConfigFromResolvers(n,r){for(let o=0;oe?e.pathname+e.search:""}}var hC=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],KP=hC.map(t=>`[${t}]`).join(", "),XP=/^url\(['"]?#(.*?)['"]?\)$/,uo=(()=>{let e=class e{get color(){return this._color||this._defaultColor}set color(n){this._color=n}get svgIcon(){return this._svgIcon}set svgIcon(n){n!==this._svgIcon&&(n?this._updateSvgIcon(n):this._svgIcon&&this._clearSvgElement(),this._svgIcon=n)}get fontSet(){return this._fontSet}set fontSet(n){let r=this._cleanupFontValue(n);r!==this._fontSet&&(this._fontSet=r,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(n){let r=this._cleanupFontValue(n);r!==this._fontIcon&&(this._fontIcon=r,this._updateFontIconClasses())}constructor(n,r,o,s,a,l){this._elementRef=n,this._iconRegistry=r,this._location=s,this._errorHandler=a,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=ge.EMPTY,l&&(l.color&&(this.color=this._defaultColor=l.color),l.fontSet&&(this.fontSet=l.fontSet)),o||n.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(n){if(!n)return["",""];let r=n.split(":");switch(r.length){case 1:return["",r[0]];case 2:return r;default:throw Error(`Invalid icon name: "${n}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let n=this._elementsWithExternalReferences;if(n&&n.size){let r=this._location.getPathname();r!==this._previousPath&&(this._previousPath=r,this._prependPathToReferences(r))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(n){this._clearSvgElement();let r=this._location.getPathname();this._previousPath=r,this._cacheChildrenWithExternalReferences(n),this._prependPathToReferences(r),this._elementRef.nativeElement.appendChild(n)}_clearSvgElement(){let n=this._elementRef.nativeElement,r=n.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();r--;){let o=n.childNodes[r];(o.nodeType!==1||o.nodeName.toLowerCase()==="svg")&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let n=this._elementRef.nativeElement,r=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>n.classList.remove(o)),r.forEach(o=>n.classList.add(o)),this._previousFontSetClass=r,this.fontIcon!==this._previousFontIconClass&&!r.includes("mat-ligature-font")&&(this._previousFontIconClass&&n.classList.remove(this._previousFontIconClass),this.fontIcon&&n.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(n){return typeof n=="string"?n.trim().split(" ")[0]:n}_prependPathToReferences(n){let r=this._elementsWithExternalReferences;r&&r.forEach((o,s)=>{o.forEach(a=>{s.setAttribute(a.name,`url('${n}#${a.value}')`)})})}_cacheChildrenWithExternalReferences(n){let r=n.querySelectorAll(KP),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let s=0;s{let l=r[s],c=l.getAttribute(a),d=c?c.match(XP):null;if(d){let u=o.get(l);u||(u=[],o.set(l,u)),u.push({name:a,value:d[1]})}})}_updateSvgIcon(n){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),n){let[r,o]=this._splitIconName(n);r&&(this._svgNamespace=r),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,r).pipe(Ee(1)).subscribe(s=>this._setSvgElement(s),s=>{let a=`Error retrieving icon ${r}:${o}! ${s.message}`;this._errorHandler.handleError(new Error(a))})}}};e.\u0275fac=function(r){return new(r||e)(h(O),h(GP),xi("aria-hidden"),h(ZP),h(Ot),h(YP,8))},e.\u0275cmp=P({type:e,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(r,o){r&2&&(De("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),dn(o.color?"mat-"+o.color:""),xe("mat-icon-inline",o.inline)("mat-icon-no-color",o.color!=="primary"&&o.color!=="accent"&&o.color!=="warn"))},inputs:{color:"color",inline:[2,"inline","inline",te],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[Ve,L],ngContentSelectors:HP,decls:1,vars:0,template:function(r,o){r&1&&(et(),_e(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0});let t=e;return t})(),fo=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[vn,vn]});let t=e;return t})();var gr=(()=>{let e=class e{constructor(n){this._snackBar=n,this.horizontalPosition="center",this.verticalPosition="top"}success(n){this.open({type:"success",duration:1500,data:n})}info(n){this.open({type:"info",duration:2e3,data:n})}warning(n){this.open({type:"warning",duration:3e3,data:n})}error(n){this.open({type:"error",duration:3500,data:n})}open(n){switch(n.type){case"success":this._snackBar.openFromComponent(eL,{data:n.data,duration:n.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["success-snackbar"]});break;case"info":this._snackBar.openFromComponent(mC,{data:n.data,duration:n.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["info-snackbar"]});break;case"warning":this._snackBar.openFromComponent(tL,{data:n.data,duration:n.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["warning-snackbar"]});break;case"error":this._snackBar.openFromComponent(nL,{data:n.data,duration:n.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["error-snackbar"]});break;default:this._snackBar.openFromComponent(mC,{data:n.data,duration:n.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["info-snackbar"]});break}}};e.\u0275fac=function(r){return new(r||e)(g(lC))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),eL=(()=>{let e=class e{constructor(n,r,o,s){this.data=n,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(h(ht),h(ht),h(ht),h(ht))},e.\u0275cmp=P({type:e,selectors:[["snack-message-success"]],standalone:!0,features:[L],decls:6,vars:1,consts:[[1,"snack-message-success","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div")(2,"mat-icon"),T(3,"cancel"),b()(),v(4,"div",1),T(5),b()()),r&2&&(E(5),Le(" ",o.data," "))},dependencies:[fo,uo]});let t=e;return t})(),mC=(()=>{let e=class e{constructor(n,r,o,s){this.data=n,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(h(ht),h(ht),h(ht),h(ht))},e.\u0275cmp=P({type:e,selectors:[["snack-message-info"]],standalone:!0,features:[L],decls:6,vars:1,consts:[[1,"snack-message-info","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div")(2,"mat-icon"),T(3,"cancel"),b()(),v(4,"div",1),T(5),b()()),r&2&&(E(5),Le(" ",o.data," "))},dependencies:[fo,uo]});let t=e;return t})(),tL=(()=>{let e=class e{constructor(n,r,o,s){this.data=n,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(h(ht),h(ht),h(ht),h(ht))},e.\u0275cmp=P({type:e,selectors:[["snack-message-warning"]],standalone:!0,features:[L],decls:6,vars:1,consts:[[1,"snack-message-warning","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div")(2,"mat-icon"),T(3,"cancel"),b()(),v(4,"div",1),T(5),b()()),r&2&&(E(5),Le(" ",o.data," "))},dependencies:[fo,uo]});let t=e;return t})(),nL=(()=>{let e=class e{constructor(n,r,o,s){this.data=n,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(h(ht),h(ht),h(ht),h(ht))},e.\u0275cmp=P({type:e,selectors:[["snack-message-error"]],standalone:!0,features:[L],decls:6,vars:1,consts:[[1,"snack-message-error","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div")(2,"mat-icon"),T(3,"cancel"),b()(),v(4,"div",1),T(5),b()()),r&2&&(E(5),Le(" ",o.data," "))},dependencies:[fo,uo]});let t=e;return t})();var _n=(()=>{let e=class e{constructor(n,r,o){this.msg_srv=n,this.http=r,this.router=o,this.auth_login_url="/api/user/auth/login",this.auth_logout_url="/api/user/auth/logout",this.manage_user_create_url="/api/user/manage/user/create",this.manage_user_update_url="/api/user/manage/user/update",this.manage_user_delete_url="/api/user/manage/user/delete",this.manage_user_list_url="/api/user/manage/user/list",this.init_user={id:0,username:""},this.user=Aa(this.init_user),this.user_list=Aa({total:0,page:0,size:20,list:[]}),this.auth_verify()}auth_login(n,r){this.http.post(this.auth_login_url,{username:n,password:r}).subscribe(o=>{o.status===200&&(localStorage.setItem("ult-token",o.data.token),this.user.set(o.data.user),this.router.navigate([""]))})}auth_verify(){this.http.get(this.auth_login_url).subscribe(n=>{n.status===200&&(this.user.set(n.data.user),console.log("[D] auth verify user=",this.user()))})}auth_logout(){this.http.post(this.auth_logout_url,{}).subscribe(n=>{this.router.navigate(["login"]).finally(()=>{localStorage.removeItem("ult-token"),this.user.set(this.init_user)})})}manage_user_create(n){return this.http.post(this.manage_user_create_url,w({},n)).pipe(Me({next:r=>{r.status===200&&this.manage_user_list()}}))}manage_user_delete(n){return this.http.post(this.manage_user_delete_url,{id:n.id}).pipe(Me({next:r=>{r.status===200?(this.msg_srv.success("\u5220\u9664\u7528\u6237\u6210\u529F"),this.manage_user_list()):this.msg_srv.error(r.msg)}})).subscribe()}manage_user_update(n){return this.http.post(this.manage_user_update_url,n).pipe(Me({next:r=>{r.status===200?(this.msg_srv.success("\u66F4\u65B0\u7528\u6237\u6210\u529F"),this.manage_user_list()):this.msg_srv.error(r.msg)}}))}manage_user_list(){this.http.get(this.manage_user_list_url,{params:{}}).subscribe(n=>{n.status===200?this.user_list.set(Z(w({},this.user_list()),{total:n.data.total,list:n.data.list})):this.user_list.set(Z(w({},this.user_list()),{list:[]}))})}};e.\u0275fac=function(r){return new(r||e)(g(gr),g(eo),g(ur))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var pC=(()=>{let e=class e{constructor(n){this.user_srv=n}};e.\u0275fac=function(r){return new(r||e)(h(_n))},e.\u0275cmp=P({type:e,selectors:[["app-home"]],standalone:!0,features:[L],decls:2,vars:0,template:function(r,o){r&1&&(v(0,"h1"),T(1,"Welcome"),b())},dependencies:[tt],styles:['[_nghost-%COMP%]{width:100%;height:100%;max-height:100%;min-height:100%;display:flex;justify-content:center;align-items:center;background-color:#fff;margin:0}@keyframes _ngcontent-%COMP%_fillup{0%{background-position-x:200%}to{background-position-x:0}}@keyframes _ngcontent-%COMP%_fadein{0%{opacity:0}to{opacity:1}}[_nghost-%COMP%] h1[_ngcontent-%COMP%]{width:100%;margin:0;padding:0;height:100%;display:flex;align-items:center;justify-content:center;color:var(--my-primary-color);font-size:12rem;font-family:Arial,Helvetica,sans-serif;font-weight:800;letter-spacing:-.5rem;position:relative;background-image:linear-gradient(to right,var(--my-primary-color),var(--my-primary-color),transparent);background-size:200% 100%;background-repeat:no-repeat;-webkit-background-clip:text;background-position-x:200%;animation:3s _ngcontent-%COMP%_fillup ease-in-out 2s forwards}[_nghost-%COMP%] h1[_ngcontent-%COMP%]:after{content:"Welcome";position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;-webkit-text-stroke-color:white;-webkit-text-fill-color:transparent;opacity:0;animation:2s _ngcontent-%COMP%_fadein ease-in-out forwards}@media screen and (max-width: 40rem){[_nghost-%COMP%] h1[_ngcontent-%COMP%]{font-size:8rem}}']});let t=e;return t})();var xC=(()=>{let e=class e{constructor(n,r){this._renderer=n,this._elementRef=r,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(n,r){this._renderer.setProperty(this._elementRef.nativeElement,n,r)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}};e.\u0275fac=function(r){return new(r||e)(h(Yr),h(O))},e.\u0275dir=R({type:e});let t=e;return t})(),iL=(()=>{let e=class e extends xC{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,features:[ve]});let t=e;return t})(),Dv=new D("");var rL={provide:Dv,useExisting:tr(()=>_r),multi:!0};function oL(){let t=Ti()?Ti().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}var sL=new D(""),_r=(()=>{let e=class e extends xC{constructor(n,r,o){super(n,r),this._compositionMode=o,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!oL())}writeValue(n){let r=n??"";this.setProperty("value",r)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}};e.\u0275fac=function(r){return new(r||e)(h(Yr),h(O),h(sL,8))},e.\u0275dir=R({type:e,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(r,o){r&1&&z("input",function(a){return o._handleInput(a.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(a){return o._compositionEnd(a.target.value)})},features:[Ne([rL]),ve]});let t=e;return t})();function vr(t){return t==null||(typeof t=="string"||Array.isArray(t))&&t.length===0}function DC(t){return t!=null&&typeof t.length=="number"}var sf=new D(""),af=new D(""),aL=/^(?=.{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])?)*$/,Ns=class{static min(e){return lL(e)}static max(e){return cL(e)}static required(e){return dL(e)}static requiredTrue(e){return uL(e)}static email(e){return fL(e)}static minLength(e){return hL(e)}static maxLength(e){return mL(e)}static pattern(e){return pL(e)}static nullValidator(e){return CC(e)}static compose(e){return AC(e)}static composeAsync(e){return RC(e)}};function lL(t){return e=>{if(vr(e.value)||vr(t))return null;let i=parseFloat(e.value);return!isNaN(i)&&i{if(vr(e.value)||vr(t))return null;let i=parseFloat(e.value);return!isNaN(i)&&i>t?{max:{max:t,actual:e.value}}:null}}function dL(t){return vr(t.value)?{required:!0}:null}function uL(t){return t.value===!0?null:{required:!0}}function fL(t){return vr(t.value)||aL.test(t.value)?null:{email:!0}}function hL(t){return e=>vr(e.value)||!DC(e.value)?null:e.value.lengthDC(e.value)&&e.value.length>t?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}function pL(t){if(!t)return CC;let e,i;return typeof t=="string"?(i="",t.charAt(0)!=="^"&&(i+="^"),i+=t,t.charAt(t.length-1)!=="$"&&(i+="$"),e=new RegExp(i)):(i=t.toString(),e=t),n=>{if(vr(n.value))return null;let r=n.value;return e.test(r)?null:{pattern:{requiredPattern:i,actualValue:r}}}}function CC(t){return null}function EC(t){return t!=null}function IC(t){return Kr(t)?$e(t):t}function SC(t){let e={};return t.forEach(i=>{e=i!=null?w(w({},e),i):e}),Object.keys(e).length===0?null:e}function MC(t,e){return e.map(i=>i(t))}function gL(t){return!t.validate}function TC(t){return t.map(e=>gL(e)?e:i=>e.validate(i))}function AC(t){if(!t)return null;let e=t.filter(EC);return e.length==0?null:function(i){return SC(MC(i,e))}}function Cv(t){return t!=null?AC(TC(t)):null}function RC(t){if(!t)return null;let e=t.filter(EC);return e.length==0?null:function(i){let n=MC(i,e).map(IC);return ia(n).pipe(N(SC))}}function Ev(t){return t!=null?RC(TC(t)):null}function gC(t,e){return t===null?[e]:Array.isArray(t)?[...t,e]:[t,e]}function OC(t){return t._rawValidators}function kC(t){return t._rawAsyncValidators}function _v(t){return t?Array.isArray(t)?t:[t]:[]}function Ku(t,e){return Array.isArray(t)?t.includes(e):t===e}function vC(t,e){let i=_v(e);return _v(t).forEach(r=>{Ku(i,r)||i.push(r)}),i}function bC(t,e){return _v(e).filter(i=>!Ku(t,i))}var Xu=class{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(e){this._rawValidators=e||[],this._composedValidatorFn=Cv(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Ev(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,i){return this.control?this.control.hasError(e,i):!1}getError(e,i){return this.control?this.control.getError(e,i):null}},ho=class extends Xu{get formDirective(){return null}get path(){return null}},Fn=class extends Xu{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},yv=class{constructor(e){this._cd=e}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}},vL={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},j7=Z(w({},vL),{"[class.ng-submitted]":"isSubmitted"}),Fs=(()=>{let e=class e extends yv{constructor(n){super(n)}};e.\u0275fac=function(r){return new(r||e)(h(Fn,2))},e.\u0275dir=R({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(r,o){r&2&&xe("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[ve]});let t=e;return t})();var yl="VALID",Qu="INVALID",Os="PENDING",wl="DISABLED",br=class{},Ju=class extends br{constructor(e,i){super(),this.value=e,this.source=i}},Dl=class extends br{constructor(e,i){super(),this.pristine=e,this.source=i}},Cl=class extends br{constructor(e,i){super(),this.touched=e,this.source=i}},ks=class extends br{constructor(e,i){super(),this.status=e,this.source=i}},wv=class extends br{constructor(e){super(),this.source=e}},xv=class extends br{constructor(e){super(),this.source=e}};function NC(t){return(lf(t)?t.validators:t)||null}function bL(t){return Array.isArray(t)?Cv(t):t||null}function FC(t,e){return(lf(e)?e.asyncValidators:t)||null}function _L(t){return Array.isArray(t)?Ev(t):t||null}function lf(t){return t!=null&&!Array.isArray(t)&&typeof t=="object"}function yL(t,e,i){let n=t.controls;if(!(e?Object.keys(n):n).length)throw new S(1e3,"");if(!n[i])throw new S(1001,"")}function wL(t,e,i){t._forEachChild((n,r)=>{if(i[r]===void 0)throw new S(1002,"")})}var ef=class{constructor(e,i){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=null,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._events=new M,this.events=this._events.asObservable(),this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(i)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get valid(){return this.status===yl}get invalid(){return this.status===Qu}get pending(){return this.status==Os}get disabled(){return this.status===wl}get enabled(){return this.status!==wl}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(vC(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(vC(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(bC(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(bC(e,this._rawAsyncValidators))}hasValidator(e){return Ku(this._rawValidators,e)}hasAsyncValidator(e){return Ku(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let i=this.touched===!1;this.touched=!0;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsTouched(Z(w({},e),{sourceControl:n})),i&&e.emitEvent!==!1&&this._events.next(new Cl(!0,n))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(i=>i.markAllAsTouched(e))}markAsUntouched(e={}){let i=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:n})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,n),i&&e.emitEvent!==!1&&this._events.next(new Cl(!1,n))}markAsDirty(e={}){let i=this.pristine===!0;this.pristine=!1;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsDirty(Z(w({},e),{sourceControl:n})),i&&e.emitEvent!==!1&&this._events.next(new Dl(!1,n))}markAsPristine(e={}){let i=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e,n),i&&e.emitEvent!==!1&&this._events.next(new Dl(!0,n))}markAsPending(e={}){this.status=Os;let i=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new ks(this.status,i)),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.markAsPending(Z(w({},e),{sourceControl:i}))}disable(e={}){let i=this._parentMarkedDirty(e.onlySelf);this.status=wl,this.errors=null,this._forEachChild(r=>{r.disable(Z(w({},e),{onlySelf:!0}))}),this._updateValue();let n=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Ju(this.value,n)),this._events.next(new ks(this.status,n)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Z(w({},e),{skipPristineCheck:i}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){let i=this._parentMarkedDirty(e.onlySelf);this.status=yl,this._forEachChild(n=>{n.enable(Z(w({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(Z(w({},e),{skipPristineCheck:i}),this),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e,i){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine({},i),this._parent._updateTouched({},i))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let n=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===yl||this.status===Os)&&this._runAsyncValidator(n,e.emitEvent)}let i=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Ju(this.value,i)),this._events.next(new ks(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(Z(w({},e),{sourceControl:i}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(i=>i._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?wl:yl}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,i){if(this.asyncValidator){this.status=Os,this._hasOwnPendingAsyncValidator={emitEvent:i!==!1};let n=IC(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:i,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,i={}){this.errors=e,this._updateControlsErrors(i.emitEvent!==!1,this,i.shouldHaveEmitted)}get(e){let i=e;return i==null||(Array.isArray(i)||(i=i.split(".")),i.length===0)?null:i.reduce((n,r)=>n&&n._find(r),this)}getError(e,i){let n=i?this.get(i):this;return n&&n.errors?n.errors[e]:null}hasError(e,i){return!!this.getError(e,i)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,i,n){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||n)&&this._events.next(new ks(this.status,i)),this._parent&&this._parent._updateControlsErrors(e,i,n)}_initObservables(){this.valueChanges=new G,this.statusChanges=new G}_calculateStatus(){return this._allControlsDisabled()?wl:this.errors?Qu:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Os)?Os:this._anyControlsHaveStatus(Qu)?Qu:yl}_anyControlsHaveStatus(e){return this._anyControls(i=>i.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,i){let n=!this._anyControlsDirty(),r=this.pristine!==n;this.pristine=n,this._parent&&!e.onlySelf&&this._parent._updatePristine(e,i),r&&this._events.next(new Dl(this.pristine,i))}_updateTouched(e={},i){this.touched=this._anyControlsTouched(),this._events.next(new Cl(this.touched,i)),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,i)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){lf(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let i=this._parent&&this._parent.dirty;return!e&&!!i&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=bL(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=_L(this._rawAsyncValidators)}},tf=class extends ef{constructor(e,i,n){super(NC(i),FC(n,i)),this.controls=e,this._initObservables(),this._setUpdateStrategy(i),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,i){return this.controls[e]?this.controls[e]:(this.controls[e]=i,i.setParent(this),i._registerOnCollectionChange(this._onCollectionChange),i)}addControl(e,i,n={}){this.registerControl(e,i),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}removeControl(e,i={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}setControl(e,i,n={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],i&&this.registerControl(e,i),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,i={}){wL(this,!0,e),Object.keys(e).forEach(n=>{yL(this,!0,n),this.controls[n].setValue(e[n],{onlySelf:!0,emitEvent:i.emitEvent})}),this.updateValueAndValidity(i)}patchValue(e,i={}){e!=null&&(Object.keys(e).forEach(n=>{let r=this.controls[n];r&&r.patchValue(e[n],{onlySelf:!0,emitEvent:i.emitEvent})}),this.updateValueAndValidity(i))}reset(e={},i={}){this._forEachChild((n,r)=>{n.reset(e?e[r]:null,{onlySelf:!0,emitEvent:i.emitEvent})}),this._updatePristine(i,this),this._updateTouched(i,this),this.updateValueAndValidity(i)}getRawValue(){return this._reduceChildren({},(e,i,n)=>(e[n]=i.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(i,n)=>n._syncPendingControls()?!0:i);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(i=>{let n=this.controls[i];n&&e(n,i)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(let[i,n]of Object.entries(this.controls))if(this.contains(i)&&e(n))return!0;return!1}_reduceValue(){let e={};return this._reduceChildren(e,(i,n,r)=>((n.enabled||this.disabled)&&(i[r]=n.value),i))}_reduceChildren(e,i){let n=e;return this._forEachChild((r,o)=>{n=i(n,r,o)}),n}_allControlsDisabled(){for(let e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}};var Ps=new D("CallSetDisabledState",{providedIn:"root",factory:()=>cf}),cf="always";function xL(t,e){return[...e.path,t]}function El(t,e,i=cf){Iv(t,e),e.valueAccessor.writeValue(t.value),(t.disabled||i==="always")&&e.valueAccessor.setDisabledState?.(t.disabled),CL(t,e),IL(t,e),EL(t,e),DL(t,e)}function nf(t,e,i=!0){let n=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(n),e.valueAccessor.registerOnTouched(n)),of(t,e),t&&(e._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function rf(t,e){t.forEach(i=>{i.registerOnValidatorChange&&i.registerOnValidatorChange(e)})}function DL(t,e){if(e.valueAccessor.setDisabledState){let i=n=>{e.valueAccessor.setDisabledState(n)};t.registerOnDisabledChange(i),e._registerOnDestroy(()=>{t._unregisterOnDisabledChange(i)})}}function Iv(t,e){let i=OC(t);e.validator!==null?t.setValidators(gC(i,e.validator)):typeof i=="function"&&t.setValidators([i]);let n=kC(t);e.asyncValidator!==null?t.setAsyncValidators(gC(n,e.asyncValidator)):typeof n=="function"&&t.setAsyncValidators([n]);let r=()=>t.updateValueAndValidity();rf(e._rawValidators,r),rf(e._rawAsyncValidators,r)}function of(t,e){let i=!1;if(t!==null){if(e.validator!==null){let r=OC(t);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==e.validator);o.length!==r.length&&(i=!0,t.setValidators(o))}}if(e.asyncValidator!==null){let r=kC(t);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==e.asyncValidator);o.length!==r.length&&(i=!0,t.setAsyncValidators(o))}}}let n=()=>{};return rf(e._rawValidators,n),rf(e._rawAsyncValidators,n),i}function CL(t,e){e.valueAccessor.registerOnChange(i=>{t._pendingValue=i,t._pendingChange=!0,t._pendingDirty=!0,t.updateOn==="change"&&PC(t,e)})}function EL(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,t.updateOn==="blur"&&t._pendingChange&&PC(t,e),t.updateOn!=="submit"&&t.markAsTouched()})}function PC(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function IL(t,e){let i=(n,r)=>{e.valueAccessor.writeValue(n),r&&e.viewToModelUpdate(n)};t.registerOnChange(i),e._registerOnDestroy(()=>{t._unregisterOnChange(i)})}function LC(t,e){t==null,Iv(t,e)}function SL(t,e){return of(t,e)}function jC(t,e){if(!t.hasOwnProperty("model"))return!1;let i=t.model;return i.isFirstChange()?!0:!Object.is(e,i.currentValue)}function ML(t){return Object.getPrototypeOf(t.constructor)===iL}function VC(t,e){t._syncPendingControls(),e.forEach(i=>{let n=i.control;n.updateOn==="submit"&&n._pendingChange&&(i.viewToModelUpdate(n._pendingValue),n._pendingChange=!1)})}function BC(t,e){if(!e)return null;Array.isArray(e);let i,n,r;return e.forEach(o=>{o.constructor===_r?i=o:ML(o)?n=o:r=o}),r||n||i||null}function TL(t,e){let i=t.indexOf(e);i>-1&&t.splice(i,1)}var AL={provide:ho,useExisting:tr(()=>Il)},xl=Promise.resolve(),Il=(()=>{let e=class e extends ho{constructor(n,r,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._directives=new Set,this.ngSubmit=new G,this.form=new tf({},Cv(n),Ev(r))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(n){xl.then(()=>{let r=this._findContainer(n.path);n.control=r.registerControl(n.name,n.control),El(n.control,n,this.callSetDisabledState),n.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(n)})}getControl(n){return this.form.get(n.path)}removeControl(n){xl.then(()=>{let r=this._findContainer(n.path);r&&r.removeControl(n.name),this._directives.delete(n)})}addFormGroup(n){xl.then(()=>{let r=this._findContainer(n.path),o=new tf({});LC(o,n),r.registerControl(n.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(n){xl.then(()=>{let r=this._findContainer(n.path);r&&r.removeControl(n.name)})}getFormGroup(n){return this.form.get(n.path)}updateModel(n,r){xl.then(()=>{this.form.get(n.path).setValue(r)})}setValue(n){this.control.setValue(n)}onSubmit(n){return this.submitted=!0,VC(this.form,this._directives),this.ngSubmit.emit(n),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(n){return n.pop(),n.length?this.form.get(n):this.form}};e.\u0275fac=function(r){return new(r||e)(h(sf,10),h(af,10),h(Ps,8))},e.\u0275dir=R({type:e,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(r,o){r&1&&z("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Ne([AL]),ve]});let t=e;return t})();function _C(t,e){let i=t.indexOf(e);i>-1&&t.splice(i,1)}function yC(t){return typeof t=="object"&&t!==null&&Object.keys(t).length===2&&"value"in t&&"disabled"in t}var mo=class extends ef{constructor(e=null,i,n){super(NC(i),FC(n,i)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(i),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),lf(i)&&(i.nonNullable||i.initialValueIsDefault)&&(yC(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,i={}){this.value=this._pendingValue=e,this._onChange.length&&i.emitModelToViewChange!==!1&&this._onChange.forEach(n=>n(this.value,i.emitViewToModelChange!==!1)),this.updateValueAndValidity(i)}patchValue(e,i={}){this.setValue(e,i)}reset(e=this.defaultValue,i={}){this._applyFormState(e),this.markAsPristine(i),this.markAsUntouched(i),this.setValue(this.value,i),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){_C(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){_C(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){yC(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var RL=t=>t instanceof mo;var OL={provide:Fn,useExisting:tr(()=>Sl)},wC=Promise.resolve(),Sl=(()=>{let e=class e extends Fn{constructor(n,r,o,s,a,l){super(),this._changeDetectorRef=a,this.callSetDisabledState=l,this.control=new mo,this._registered=!1,this.name="",this.update=new G,this._parent=n,this._setValidators(r),this._setAsyncValidators(o),this.valueAccessor=BC(this,s)}ngOnChanges(n){if(this._checkForErrors(),!this._registered||"name"in n){if(this._registered&&(this._checkName(),this.formDirective)){let r=n.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in n&&this._updateDisabled(n),jC(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){El(this.control,this,this.callSetDisabledState),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()&&this.name}_updateValue(n){wC.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(n){let r=n.isDisabled.currentValue,o=r!==0&&te(r);wC.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(n){return this._parent?xL(n,this._parent):[n]}};e.\u0275fac=function(r){return new(r||e)(h(ho,9),h(sf,10),h(af,10),h(Dv,10),h(Fe,8),h(Ps,8))},e.\u0275dir=R({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Ne([OL]),ve,Xe]});let t=e;return t})();var zC=new D(""),kL={provide:Fn,useExisting:tr(()=>Sv)},Sv=(()=>{let e=class e extends Fn{set isDisabled(n){}constructor(n,r,o,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this.update=new G,this._ngModelWarningSent=!1,this._setValidators(n),this._setAsyncValidators(r),this.valueAccessor=BC(this,o)}ngOnChanges(n){if(this._isControlChanged(n)){let r=n.form.previousValue;r&&nf(r,this,!1),El(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}jC(n,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&nf(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_isControlChanged(n){return n.hasOwnProperty("form")}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(r){return new(r||e)(h(sf,10),h(af,10),h(Dv,10),h(zC,8),h(Ps,8))},e.\u0275dir=R({type:e,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[Ne([kL]),ve,Xe]});let t=e;return t})(),NL={provide:ho,useExisting:tr(()=>Ml)},Ml=(()=>{let e=class e extends ho{constructor(n,r,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new G,this._setValidators(n),this._setAsyncValidators(r)}ngOnChanges(n){this._checkFormPresent(),n.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(of(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(n){let r=this.form.get(n.path);return El(r,n,this.callSetDisabledState),r.updateValueAndValidity({emitEvent:!1}),this.directives.push(n),r}getControl(n){return this.form.get(n.path)}removeControl(n){nf(n.control||null,n,!1),TL(this.directives,n)}addFormGroup(n){this._setUpFormContainer(n)}removeFormGroup(n){this._cleanUpFormContainer(n)}getFormGroup(n){return this.form.get(n.path)}addFormArray(n){this._setUpFormContainer(n)}removeFormArray(n){this._cleanUpFormContainer(n)}getFormArray(n){return this.form.get(n.path)}updateModel(n,r){this.form.get(n.path).setValue(r)}onSubmit(n){return this.submitted=!0,VC(this.form,this.directives),this.ngSubmit.emit(n),this.form._events.next(new wv(this.control)),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1,this.form._events.next(new xv(this.form))}_updateDomValue(){this.directives.forEach(n=>{let r=n.control,o=this.form.get(n.path);r!==o&&(nf(r||null,n),RL(o)&&(El(o,n,this.callSetDisabledState),n.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(n){let r=this.form.get(n.path);LC(r,n),r.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(n){if(this.form){let r=this.form.get(n.path);r&&SL(r,n)&&r.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Iv(this.form,this),this._oldForm&&of(this._oldForm,this)}_checkFormPresent(){this.form}};e.\u0275fac=function(r){return new(r||e)(h(sf,10),h(af,10),h(Ps,8))},e.\u0275dir=R({type:e,selectors:[["","formGroup",""]],hostBindings:function(r,o){r&1&&z("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Ne([NL]),ve,Xe]});let t=e;return t})();var UC=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({});let t=e;return t})();var Ls=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:Ps,useValue:n.callSetDisabledState??cf}]}}};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[UC]});let t=e;return t})(),HC=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:zC,useValue:n.warnOnNgModelWithFormControl??"always"},{provide:Ps,useValue:n.callSetDisabledState??cf}]}}};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[UC]});let t=e;return t})();var $C=mn({passive:!0}),WC=(()=>{let e=class e{constructor(n,r){this._platform=n,this._ngZone=r,this._monitoredElements=new Map}monitor(n){if(!this._platform.isBrowser)return _t;let r=pn(n),o=this._monitoredElements.get(r);if(o)return o.subject;let s=new M,a="cdk-text-field-autofilled",l=c=>{c.animationName==="cdk-text-field-autofill-start"&&!r.classList.contains(a)?(r.classList.add(a),this._ngZone.run(()=>s.next({target:c.target,isAutofilled:!0}))):c.animationName==="cdk-text-field-autofill-end"&&r.classList.contains(a)&&(r.classList.remove(a),this._ngZone.run(()=>s.next({target:c.target,isAutofilled:!1})))};return this._ngZone.runOutsideAngular(()=>{r.addEventListener("animationstart",l,$C),r.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(r,{subject:s,unlisten:()=>{r.removeEventListener("animationstart",l,$C)}}),s}stopMonitoring(n){let r=pn(n),o=this._monitoredElements.get(r);o&&(o.unlisten(),o.subject.complete(),r.classList.remove("cdk-text-field-autofill-monitored"),r.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(r))}ngOnDestroy(){this._monitoredElements.forEach((n,r)=>this.stopMonitoring(r))}};e.\u0275fac=function(r){return new(r||e)(g(ye),g(A))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var GC=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({});let t=e;return t})();var Mv=class{constructor(e){this._box=e,this._destroyed=new M,this._resizeSubject=new M,this._elementObservables=new Map,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(i=>this._resizeSubject.next(i)))}observe(e){return this._elementObservables.has(e)||this._elementObservables.set(e,new q(i=>{let n=this._resizeSubject.subscribe(i);return this._resizeObserver?.observe(e,{box:this._box}),()=>{this._resizeObserver?.unobserve(e),n.unsubscribe(),this._elementObservables.delete(e)}}).pipe(ce(i=>i.some(n=>n.target===e)),Ic({bufferSize:1,refCount:!0}),fe(this._destroyed))),this._elementObservables.get(e)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}},qC=(()=>{let e=class e{constructor(){this._observers=new Map,this._ngZone=y(A),typeof ResizeObserver<"u"}ngOnDestroy(){for(let[,n]of this._observers)n.destroy();this._observers.clear(),typeof ResizeObserver<"u"}observe(n,r){let o=r?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Mv(o)),this._observers.get(o).observe(n)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var PL=["notch"],LL=["matFormFieldNotchedOutline",""],jL=["*"],VL=["textField"],BL=["iconPrefixContainer"],zL=["textPrefixContainer"],UL=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],HL=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function $L(t,e){t&1&&ie(0,"span",19)}function WL(t,e){if(t&1&&(v(0,"label",18),_e(1,1),B(2,$L,1,0,"span",19),b()),t&2){let i=$(2);U("floating",i._shouldLabelFloat())("monitorResize",i._hasOutline())("id",i._labelId),De("for",i._control.disableAutomaticLabeling?null:i._control.id),E(2),be(!i.hideRequiredMarker&&i._control.required?2:-1)}}function GL(t,e){if(t&1&&B(0,WL,3,5,"label",18),t&2){let i=$();be(i._hasFloatingLabel()?0:-1)}}function qL(t,e){t&1&&ie(0,"div",5)}function YL(t,e){}function ZL(t,e){if(t&1&&B(0,YL,0,0,"ng-template",11),t&2){$(2);let i=Qr(1);U("ngTemplateOutlet",i)}}function QL(t,e){if(t&1&&(v(0,"div",7),B(1,ZL,1,1,null,11),b()),t&2){let i=$();U("matFormFieldNotchedOutlineOpen",i._shouldLabelFloat()),E(),be(i._forceDisplayInfixLabel()?-1:1)}}function KL(t,e){t&1&&(v(0,"div",8,2),_e(2,2),b())}function XL(t,e){t&1&&(v(0,"div",9,3),_e(2,3),b())}function JL(t,e){}function ej(t,e){if(t&1&&B(0,JL,0,0,"ng-template",11),t&2){$();let i=Qr(1);U("ngTemplateOutlet",i)}}function tj(t,e){t&1&&(v(0,"div",12),_e(1,4),b())}function nj(t,e){t&1&&(v(0,"div",13),_e(1,5),b())}function ij(t,e){t&1&&ie(0,"div",14)}function rj(t,e){if(t&1&&(v(0,"div",16),_e(1,6),b()),t&2){let i=$();U("@transitionMessages",i._subscriptAnimationState)}}function oj(t,e){if(t&1&&(v(0,"mat-hint",20),T(1),b()),t&2){let i=$(2);U("id",i._hintLabelId),E(),At(i.hintLabel)}}function sj(t,e){if(t&1&&(v(0,"div",17),B(1,oj,2,2,"mat-hint",20),_e(2,7),ie(3,"div",21),_e(4,8),b()),t&2){let i=$();U("@transitionMessages",i._subscriptAnimationState),E(),be(i.hintLabel?1:-1)}}var ji=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["mat-label"]],standalone:!0});let t=e;return t})();var aj=new D("MatError");var lj=0,Tv=(()=>{let e=class e{constructor(){this.align="start",this.id=`mat-mdc-hint-${lj++}`}};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(r,o){r&2&&(Jn("id",o.id),De("align",null),xe("mat-mdc-form-field-hint-end",o.align==="end"))},inputs:{align:"align",id:"id"},standalone:!0});let t=e;return t})(),cj=new D("MatPrefix");var dj=new D("MatSuffix");var tE=new D("FloatingLabelParent"),YC=(()=>{let e=class e{get floating(){return this._floating}set floating(n){this._floating=n,this.monitorResize&&this._handleResize()}get monitorResize(){return this._monitorResize}set monitorResize(n){this._monitorResize=n,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}constructor(n){this._elementRef=n,this._floating=!1,this._monitorResize=!1,this._resizeObserver=y(qC),this._ngZone=y(A),this._parent=y(tE),this._resizeSubscription=new ge}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return uj(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}};e.\u0275fac=function(r){return new(r||e)(h(O))},e.\u0275dir=R({type:e,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(r,o){r&2&&xe("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"},standalone:!0});let t=e;return t})();function uj(t){let e=t;if(e.offsetParent!==null)return e.scrollWidth;let i=e.cloneNode(!0);i.style.setProperty("position","absolute"),i.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(i);let n=i.scrollWidth;return i.remove(),n}var ZC="mdc-line-ripple--active",df="mdc-line-ripple--deactivating",QC=(()=>{let e=class e{constructor(n,r){this._elementRef=n,this._handleTransitionEnd=o=>{let s=this._elementRef.nativeElement.classList,a=s.contains(df);o.propertyName==="opacity"&&a&&s.remove(ZC,df)},r.runOutsideAngular(()=>{n.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){let n=this._elementRef.nativeElement.classList;n.remove(df),n.add(ZC)}deactivate(){this._elementRef.nativeElement.classList.add(df)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}};e.\u0275fac=function(r){return new(r||e)(h(O),h(A))},e.\u0275dir=R({type:e,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"],standalone:!0});let t=e;return t})(),KC=(()=>{let e=class e{constructor(n,r){this._elementRef=n,this._ngZone=r,this.open=!1}ngAfterViewInit(){let n=this._elementRef.nativeElement.querySelector(".mdc-floating-label");n?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(n.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>n.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(n){!this.open||!n?this._notch.nativeElement.style.width="":this._notch.nativeElement.style.width=`calc(${n}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`}};e.\u0275fac=function(r){return new(r||e)(h(O),h(A))},e.\u0275cmp=P({type:e,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(r,o){if(r&1&&Ye(PL,5),r&2){let s;Q(s=K())&&(o._notch=s.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(r,o){r&2&&xe("mdc-notched-outline--notched",o.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},standalone:!0,features:[L],attrs:LL,ngContentSelectors:jL,decls:5,vars:0,consts:[["notch",""],[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(r,o){r&1&&(et(),ie(0,"div",1),v(1,"div",2,0),_e(3),b(),ie(4,"div",3))},encapsulation:2,changeDetection:0});let t=e;return t})(),fj={transitionMessages:ai("transitionMessages",[li("enter",dt({opacity:1,transform:"translateY(0%)"})),tn("void => enter",[dt({opacity:0,transform:"translateY(-5px)"}),bn("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},Al=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e});let t=e;return t})();var Rl=new D("MatFormField"),hj=new D("MAT_FORM_FIELD_DEFAULT_OPTIONS"),XC=0,JC="fill",mj="auto",eE="fixed",pj="translateY(-50%)",Vi=(()=>{let e=class e{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(n){this._hideRequiredMarker=ri(n)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||mj}set floatLabel(n){n!==this._floatLabel&&(this._floatLabel=n,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(n){let r=this._appearance,o=n||this._defaults?.appearance||JC;this._appearance=o,this._appearance==="outline"&&this._appearance!==r&&(this._needsOutlineLabelOffsetUpdate=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||eE}set subscriptSizing(n){this._subscriptSizing=n||this._defaults?.subscriptSizing||eE}get hintLabel(){return this._hintLabel}set hintLabel(n){this._hintLabel=n,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(n){this._explicitFormFieldControl=n}constructor(n,r,o,s,a,l,c,d){this._elementRef=n,this._changeDetectorRef=r,this._dir=s,this._platform=a,this._defaults=l,this._animationMode=c,this._hideRequiredMarker=!1,this.color="primary",this._appearance=JC,this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId=`mat-mdc-form-field-label-${XC++}`,this._hintLabelId=`mat-mdc-hint-${XC++}`,this._subscriptAnimationState="",this._destroyed=new M,this._isFocused=null,this._needsOutlineLabelOffsetUpdate=!1,this._injector=y(me),l&&(l.appearance&&(this.appearance=l.appearance),this._hideRequiredMarker=!!l?.hideRequiredMarker,l.color&&(this.color=l.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){let n=this._control;n.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${n.controlType}`),n.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),n.ngControl&&n.ngControl.valueChanges&&n.ngControl.valueChanges.pipe(fe(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(n=>!n._isText),this._hasTextPrefix=!!this._prefixChildren.find(n=>n._isText),this._hasIconSuffix=!!this._suffixChildren.find(n=>!n._isText),this._hasTextSuffix=!!this._suffixChildren.find(n=>n._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),gt(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){this._control}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||this._isFocused===null)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0),Ta(()=>{this._needsOutlineLabelOffsetUpdate&&(this._needsOutlineLabelOffsetUpdate=!1,this._updateOutlineLabelOffset())},{injector:this._injector}),this._dir.change.pipe(fe(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0)}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(n){let r=this._control?this._control.ngControl:null;return r&&r[n]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){this._hintChildren}_syncDescribedByIds(){if(this._control){let n=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&n.push(...this._control.userAriaDescribedBy.split(" ")),this._getDisplayedMessages()==="hint"){let r=this._hintChildren?this._hintChildren.find(s=>s.align==="start"):null,o=this._hintChildren?this._hintChildren.find(s=>s.align==="end"):null;r?n.push(r.id):this._hintLabel&&n.push(this._hintLabelId),o&&n.push(o.id)}else this._errorChildren&&n.push(...this._errorChildren.map(r=>r.id));this._control.setDescribedByIds(n)}}_updateOutlineLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return;let n=this._floatingLabel.element;if(!(this._iconPrefixContainer||this._textPrefixContainer)){n.style.transform="";return}if(!this._isAttachedToDom()){this._needsOutlineLabelOffsetUpdate=!0;return}let r=this._iconPrefixContainer?.nativeElement,o=this._textPrefixContainer?.nativeElement,s=r?.getBoundingClientRect().width??0,a=o?.getBoundingClientRect().width??0,l=this._dir.value==="rtl"?"-1":"1",c=`${s+a}px`,u=`calc(${l} * (${c} + var(--mat-mdc-form-field-label-offset-x, 0px)))`;n.style.transform=`var( + --mat-mdc-form-field-label-transform, + ${pj} translateX(${u}) + )`}_isAttachedToDom(){let n=this._elementRef.nativeElement;if(n.getRootNode){let r=n.getRootNode();return r&&r!==n}return document.documentElement.contains(n)}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Fe),h(A),h(bt),h(ye),h(hj,8),h(ft,8),h(j))},e.\u0275cmp=P({type:e,selectors:[["mat-form-field"]],contentQueries:function(r,o,s){if(r&1&&(Be(s,ji,5),Be(s,ji,7),Be(s,Al,5),Be(s,cj,5),Be(s,dj,5),Be(s,aj,5),Be(s,Tv,5)),r&2){let a;Q(a=K())&&(o._labelChildNonStatic=a.first),Q(a=K())&&(o._labelChildStatic=a.first),Q(a=K())&&(o._formFieldControl=a.first),Q(a=K())&&(o._prefixChildren=a),Q(a=K())&&(o._suffixChildren=a),Q(a=K())&&(o._errorChildren=a),Q(a=K())&&(o._hintChildren=a)}},viewQuery:function(r,o){if(r&1&&(Ye(VL,5),Ye(BL,5),Ye(zL,5),Ye(YC,5),Ye(KC,5),Ye(QC,5)),r&2){let s;Q(s=K())&&(o._textField=s.first),Q(s=K())&&(o._iconPrefixContainer=s.first),Q(s=K())&&(o._textPrefixContainer=s.first),Q(s=K())&&(o._floatingLabel=s.first),Q(s=K())&&(o._notchedOutline=s.first),Q(s=K())&&(o._lineRipple=s.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(r,o){r&2&&xe("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-no-animations",o._animationMode==="NoopAnimations")("mat-form-field-appearance-fill",o.appearance=="fill")("mat-form-field-appearance-outline",o.appearance=="outline")("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-focused",o._control.focused)("mat-primary",o.color!=="accent"&&o.color!=="warn")("mat-accent",o.color==="accent")("mat-warn",o.color==="warn")("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],standalone:!0,features:[Ne([{provide:Rl,useExisting:e},{provide:tE,useExisting:e}]),L],ngContentSelectors:HL,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(r,o){if(r&1){let s=lt();et(UL),B(0,GL,1,1,"ng-template",null,0,Qw),v(2,"div",4,1),z("click",function(l){return Te(s),Ae(o._control.onContainerClick(l))}),B(4,qL,1,0,"div",5),v(5,"div",6),B(6,QL,2,2,"div",7)(7,KL,3,0,"div",8)(8,XL,3,0,"div",9),v(9,"div",10),B(10,ej,1,1,null,11),_e(11),b(),B(12,tj,2,0,"div",12)(13,nj,2,0,"div",13),b(),B(14,ij,1,0,"div",14),b(),v(15,"div",15),B(16,rj,2,1,"div",16)(17,sj,5,2,"div",17),b()}if(r&2){let s;E(2),xe("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),E(2),be(!o._hasOutline()&&!o._control.disabled?4:-1),E(2),be(o._hasOutline()?6:-1),E(),be(o._hasIconPrefix?7:-1),E(),be(o._hasTextPrefix?8:-1),E(2),be(!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),E(2),be(o._hasTextSuffix?12:-1),E(),be(o._hasIconSuffix?13:-1),E(),be(o._hasOutline()?-1:14),E(),xe("mat-mdc-form-field-subscript-dynamic-size",o.subscriptSizing==="dynamic"),E(),be((s=o._getDisplayedMessages())==="error"?16:s==="hint"?17:-1)}},dependencies:[YC,KC,px,QC,Tv],styles:['.mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 96px/0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px*2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-hover-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-hover-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-hover-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-hover-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(.75*var(--mdc-outlined-text-field-label-text-size))}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mdc-outlined-text-field-label-text-size)}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color)}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity)}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color)}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color)}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color)}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color)}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[fj.transitionMessages]},changeDetection:0});let t=e;return t})(),js=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[vn,tt,CD,vn]});let t=e;return t})();var vj=new D("MAT_INPUT_VALUE_ACCESSOR"),bj=["button","checkbox","file","hidden","image","radio","range","reset","submit"],_j=0,Vs=(()=>{let e=class e{get disabled(){return this._disabled}set disabled(n){this._disabled=ri(n),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(n){this._id=n||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(Ns.required)??!1}set required(n){this._required=ri(n)}get type(){return this._type}set type(n){this._type=n||"text",this._validateType(),!this._isTextarea&&Gg().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(n){this._errorStateTracker.matcher=n}get value(){return this._inputValueAccessor.value}set value(n){n!==this.value&&(this._inputValueAccessor.value=n,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(n){this._readonly=ri(n)}get errorState(){return this._errorStateTracker.errorState}set errorState(n){this._errorStateTracker.errorState=n}constructor(n,r,o,s,a,l,c,d,u,f){this._elementRef=n,this._platform=r,this.ngControl=o,this._autofillMonitor=d,this._formField=f,this._uid=`mat-input-${_j++}`,this.focused=!1,this.stateChanges=new M,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(_=>Gg().has(_)),this._iOSKeyupListener=_=>{let x=_.target;!x.value&&x.selectionStart===0&&x.selectionEnd===0&&(x.setSelectionRange(1,1),x.setSelectionRange(0,0))};let m=this._elementRef.nativeElement,p=m.nodeName.toLowerCase();this._inputValueAccessor=c||m,this._previousNativeValue=this.value,this.id=this.id,r.IOS&&u.runOutsideAngular(()=>{n.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._errorStateTracker=new Ds(l,o,a,s,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=p==="select",this._isTextarea=p==="textarea",this._isInFormField=!!f,this._isNativeSelect&&(this.controlType=m.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(n=>{this.autofilled=n.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(n){this._elementRef.nativeElement.focus(n)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(n){n!==this.focused&&(this.focused=n,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){let n=this._elementRef.nativeElement.value;this._previousNativeValue!==n&&(this._previousNativeValue=n,this.stateChanges.next())}_dirtyCheckPlaceholder(){let n=this._getPlaceholder();if(n!==this._previousPlaceholder){let r=this._elementRef.nativeElement;this._previousPlaceholder=n,n?r.setAttribute("placeholder",n):r.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){bj.indexOf(this._type)>-1}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let n=this._elementRef.nativeElement.validity;return n&&n.badInput}get empty(){return!this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let n=this._elementRef.nativeElement,r=n.options[0];return this.focused||n.multiple||!this.empty||!!(n.selectedIndex>-1&&r&&r.label)}else return this.focused||!this.empty}setDescribedByIds(n){n.length?this._elementRef.nativeElement.setAttribute("aria-describedby",n.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){let n=this._elementRef.nativeElement;return this._isNativeSelect&&(n.multiple||n.size>1)}};e.\u0275fac=function(r){return new(r||e)(h(O),h(ye),h(Fn,10),h(Il,8),h(Ml,8),h(Vu),h(vj,10),h(WC),h(A),h(Rl,8))},e.\u0275dir=R({type:e,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(r,o){r&1&&z("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),r&2&&(Jn("id",o.id)("disabled",o.disabled)("required",o.required),De("name",o.name||null)("readonly",o.readonly&&!o._isNativeSelect||null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),xe("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],standalone:!0,features:[Ne([{provide:Al,useExisting:e}]),Xe]});let t=e;return t})(),nE=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=ue({type:e}),e.\u0275inj=de({imports:[vn,js,js,GC,vn]});let t=e;return t})();var iE=(()=>{let e=class e{constructor(n){this.user_srv=n,this.username="",this.password=""}login(){this.user_srv.auth_login(this.username,this.password)}enter(n){n.key==="Enter"&&this.password&&this.username&&this.login()}};e.\u0275fac=function(r){return new(r||e)(h(_n))},e.\u0275cmp=P({type:e,selectors:[["app-login"]],standalone:!0,features:[L],decls:13,vars:2,consts:[["appearance","outline"],["matInput","","placeholder","username","name","username",3,"ngModelChange","ngModel"],["matInput","","placeholder","password","type","password","name","password",3,"ngModelChange","keyup","ngModel"],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(v(0,"p")(1,"mat-form-field",0)(2,"mat-label"),T(3,"username"),b(),v(4,"input",1),ti("ngModelChange",function(a){return Ei(o.username,a)||(o.username=a),a}),b()()(),v(5,"p")(6,"mat-form-field",0)(7,"mat-label"),T(8,"password"),b(),v(9,"input",2),ti("ngModelChange",function(a){return Ei(o.password,a)||(o.password=a),a}),z("keyup",function(a){return o.enter(a)}),b()()(),v(10,"p")(11,"button",3),z("click",function(){return o.login()}),T(12,"\u767B\u5F55"),b()()),r&2&&(E(4),ei("ngModel",o.username),E(5),ei("ngModel",o.password))},dependencies:[tt,Ls,_r,Fs,Sl,$t,Vs,Vi,js,ji,nE,fo],styles:["[_nghost-%COMP%]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}[_nghost-%COMP%] p[_ngcontent-%COMP%]{min-width:20rem;max-width:30rem;width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}"]});let t=e;return t})();var yj=typeof atob=="function";var Av=typeof Buffer=="function",rE=typeof TextDecoder=="function"?new TextDecoder:void 0,HY=typeof TextEncoder=="function"?new TextEncoder:void 0,wj="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",xj=Array.prototype.slice.call(wj),uf=(t=>{let e={};return t.forEach((i,n)=>e[i]=n),e})(xj),Dj=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,po=String.fromCharCode.bind(String),oE=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0));var sE=t=>t.replace(/[^A-Za-z0-9\+\/]/g,"");var Cj=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,Ej=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),i=e-65536;return po((i>>>10)+55296)+po((i&1023)+56320);case 3:return po((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return po((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},Ij=t=>t.replace(Cj,Ej),Sj=t=>{if(t=t.replace(/\s+/g,""),!Dj.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,i="",n,r;for(let o=0;o>16&255):r===64?po(e>>16&255,e>>8&255):po(e>>16&255,e>>8&255,e&255);return i},aE=yj?t=>atob(sE(t)):Av?t=>Buffer.from(t,"base64").toString("binary"):Sj,Mj=Av?t=>oE(Buffer.from(t,"base64")):t=>oE(aE(t).split("").map(e=>e.charCodeAt(0)));var Tj=Av?t=>Buffer.from(t,"base64").toString("utf8"):rE?t=>rE.decode(Mj(t)):t=>Ij(aE(t)),Aj=t=>sE(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),lE=t=>Tj(Aj(t));var Oj=[[["caption"]],[["colgroup"],["col"]],"*"],kj=["caption","colgroup, col","*"];function Nj(t,e){t&1&&_e(0,2)}function Fj(t,e){t&1&&(v(0,"thead",0),Pt(1,1),b(),v(2,"tbody",0),Pt(3,2)(4,3),b(),v(5,"tfoot",0),Pt(6,4),b())}function Pj(t,e){t&1&&Pt(0,1)(1,2)(2,3)(3,4)}var Pn=new D("CDK_TABLE");var vf=(()=>{let e=class e{constructor(n){this.template=n}};e.\u0275fac=function(r){return new(r||e)(h(Ge))},e.\u0275dir=R({type:e,selectors:[["","cdkCellDef",""]],standalone:!0});let t=e;return t})(),bf=(()=>{let e=class e{constructor(n){this.template=n}};e.\u0275fac=function(r){return new(r||e)(h(Ge))},e.\u0275dir=R({type:e,selectors:[["","cdkHeaderCellDef",""]],standalone:!0});let t=e;return t})(),uE=(()=>{let e=class e{constructor(n){this.template=n}};e.\u0275fac=function(r){return new(r||e)(h(Ge))},e.\u0275dir=R({type:e,selectors:[["","cdkFooterCellDef",""]],standalone:!0});let t=e;return t})(),Bs=(()=>{let e=class e{get name(){return this._name}set name(n){this._setNameInput(n)}get sticky(){return this._sticky}set sticky(n){n!==this._sticky&&(this._sticky=n,this._hasStickyChanged=!0)}get stickyEnd(){return this._stickyEnd}set stickyEnd(n){n!==this._stickyEnd&&(this._stickyEnd=n,this._hasStickyChanged=!0)}constructor(n){this._table=n,this._hasStickyChanged=!1,this._sticky=!1,this._stickyEnd=!1}hasStickyChanged(){let n=this._hasStickyChanged;return this.resetStickyChanged(),n}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(n){n&&(this._name=n,this.cssClassFriendlyName=n.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}};e.\u0275fac=function(r){return new(r||e)(h(Pn,8))},e.\u0275dir=R({type:e,selectors:[["","cdkColumnDef",""]],contentQueries:function(r,o,s){if(r&1&&(Be(s,vf,5),Be(s,bf,5),Be(s,uE,5)),r&2){let a;Q(a=K())&&(o.cell=a.first),Q(a=K())&&(o.headerCell=a.first),Q(a=K())&&(o.footerCell=a.first)}},inputs:{name:[0,"cdkColumnDef","name"],sticky:[2,"sticky","sticky",te],stickyEnd:[2,"stickyEnd","stickyEnd",te]},standalone:!0,features:[Ne([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:e}]),Ve]});let t=e;return t})(),hf=class{constructor(e,i){i.nativeElement.classList.add(...e._columnCssClassName)}},fE=(()=>{let e=class e extends hf{constructor(n,r){super(n,r)}};e.\u0275fac=function(r){return new(r||e)(h(Bs),h(O))},e.\u0275dir=R({type:e,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],standalone:!0,features:[ve]});let t=e;return t})();var hE=(()=>{let e=class e extends hf{constructor(n,r){super(n,r);let o=n._table?._getCellRole();o&&r.nativeElement.setAttribute("role",o)}};e.\u0275fac=function(r){return new(r||e)(h(Bs),h(O))},e.\u0275dir=R({type:e,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],standalone:!0,features:[ve]});let t=e;return t})(),mf=class{constructor(){this.tasks=[],this.endTasks=[]}},pf=new D("_COALESCED_STYLE_SCHEDULER"),Ov=(()=>{let e=class e{constructor(n){this._currentSchedule=null,this._ngZone=y(A)}schedule(n){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(n)}scheduleEnd(n){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(n)}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new mf,this._ngZone.runOutsideAngular(()=>queueMicrotask(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){let n=this._currentSchedule;this._currentSchedule=new mf;for(let r of n.tasks)r();for(let r of n.endTasks)r()}this._currentSchedule=null})))}};e.\u0275fac=function(r){return new(r||e)(g(A))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();var kv=(()=>{let e=class e{constructor(n,r){this.template=n,this._differs=r}ngOnChanges(n){if(!this._columnsDiffer){let r=n.columns&&n.columns.currentValue||[];this._columnsDiffer=this._differs.find(r).create(),this._columnsDiffer.diff(r)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(n){return this instanceof Ol?n.headerCell.template:this instanceof Nv?n.footerCell.template:n.cell.template}};e.\u0275fac=function(r){return new(r||e)(h(Ge),h(Ii))},e.\u0275dir=R({type:e,features:[Xe]});let t=e;return t})(),Ol=(()=>{let e=class e extends kv{get sticky(){return this._sticky}set sticky(n){n!==this._sticky&&(this._sticky=n,this._hasStickyChanged=!0)}constructor(n,r,o){super(n,r),this._table=o,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(n){super.ngOnChanges(n)}hasStickyChanged(){let n=this._hasStickyChanged;return this.resetStickyChanged(),n}resetStickyChanged(){this._hasStickyChanged=!1}};e.\u0275fac=function(r){return new(r||e)(h(Ge),h(Ii),h(Pn,8))},e.\u0275dir=R({type:e,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:[0,"cdkHeaderRowDef","columns"],sticky:[2,"cdkHeaderRowDefSticky","sticky",te]},standalone:!0,features:[Ve,ve,Xe]});let t=e;return t})(),Nv=(()=>{let e=class e extends kv{get sticky(){return this._sticky}set sticky(n){n!==this._sticky&&(this._sticky=n,this._hasStickyChanged=!0)}constructor(n,r,o){super(n,r),this._table=o,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(n){super.ngOnChanges(n)}hasStickyChanged(){let n=this._hasStickyChanged;return this.resetStickyChanged(),n}resetStickyChanged(){this._hasStickyChanged=!1}};e.\u0275fac=function(r){return new(r||e)(h(Ge),h(Ii),h(Pn,8))},e.\u0275dir=R({type:e,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:[0,"cdkFooterRowDef","columns"],sticky:[2,"cdkFooterRowDefSticky","sticky",te]},standalone:!0,features:[Ve,ve,Xe]});let t=e;return t})(),_f=(()=>{let e=class e extends kv{constructor(n,r,o){super(n,r),this._table=o}};e.\u0275fac=function(r){return new(r||e)(h(Ge),h(Ii),h(Pn,8))},e.\u0275dir=R({type:e,selectors:[["","cdkRowDef",""]],inputs:{columns:[0,"cdkRowDefColumns","columns"],when:[0,"cdkRowDefWhen","when"]},standalone:!0,features:[ve]});let t=e;return t})(),go=(()=>{let e=class e{constructor(n){this._viewContainer=n,e.mostRecentCellOutlet=this}ngOnDestroy(){e.mostRecentCellOutlet===this&&(e.mostRecentCellOutlet=null)}};e.mostRecentCellOutlet=null,e.\u0275fac=function(r){return new(r||e)(h(Je))},e.\u0275dir=R({type:e,selectors:[["","cdkCellOutlet",""]],standalone:!0});let t=e;return t})(),Fv=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=P({type:e,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],standalone:!0,features:[L],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Pt(0,0)},dependencies:[go],encapsulation:2});let t=e;return t})();var Pv=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=P({type:e,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],standalone:!0,features:[L],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Pt(0,0)},dependencies:[go],encapsulation:2});let t=e;return t})(),mE=(()=>{let e=class e{constructor(n){this.templateRef=n,this._contentClassName="cdk-no-data-row"}};e.\u0275fac=function(r){return new(r||e)(h(Ge))},e.\u0275dir=R({type:e,selectors:[["ng-template","cdkNoDataRow",""]],standalone:!0});let t=e;return t})(),cE=["top","bottom","left","right"],Rv=class{constructor(e,i,n,r,o=!0,s=!0,a){this._isNativeHtmlTable=e,this._stickCellCss=i,this.direction=n,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=s,this._positionListener=a,this._cachedCellWidths=[],this._borderCellCss={top:`${i}-border-elem-top`,bottom:`${i}-border-elem-bottom`,left:`${i}-border-elem-left`,right:`${i}-border-elem-right`}}clearStickyPositioning(e,i){let n=[];for(let r of e)if(r.nodeType===r.ELEMENT_NODE){n.push(r);for(let o=0;o{for(let r of n)this._removeStickyStyle(r,i)})}updateStickyColumns(e,i,n,r=!0){if(!e.length||!this._isBrowser||!(i.some(o=>o)||n.some(o=>o))){this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]}));return}this._coalescedStyleScheduler.schedule(()=>{let o=e[0],s=o.children.length,a=this._getCellWidths(o,r),l=this._getStickyStartColumnPositions(a,i),c=this._getStickyEndColumnPositions(a,n),d=i.lastIndexOf(!0),u=n.indexOf(!0),f=this.direction==="rtl",m=f?"right":"left",p=f?"left":"right";for(let _ of e)for(let x=0;xi[x]?_:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:u===-1?[]:a.slice(u).map((_,x)=>n[x+u]?_:null).reverse()}))})}stickRows(e,i,n){this._isBrowser&&this._coalescedStyleScheduler.schedule(()=>{let r=n==="bottom"?e.slice().reverse():e,o=n==="bottom"?i.slice().reverse():i,s=[],a=[],l=[];for(let d=0,u=0;d{let n=e.querySelector("tfoot");n&&(i.some(r=>!r)?this._removeStickyStyle(n,["bottom"]):this._addStickyStyle(n,"bottom",0,!1))})}_removeStickyStyle(e,i){for(let r of i)e.style[r]="",e.classList.remove(this._borderCellCss[r]);cE.some(r=>i.indexOf(r)===-1&&e.style[r])?e.style.zIndex=this._getCalculatedZIndex(e):(e.style.zIndex="",this._needsPositionStickyOnElement&&(e.style.position=""),e.classList.remove(this._stickCellCss))}_addStickyStyle(e,i,n,r){e.classList.add(this._stickCellCss),r&&e.classList.add(this._borderCellCss[i]),e.style[i]=`${n}px`,e.style.zIndex=this._getCalculatedZIndex(e),this._needsPositionStickyOnElement&&(e.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(e){let i={top:100,bottom:10,left:1,right:1},n=0;for(let r of cE)e.style[r]&&(n+=i[r]);return n?`${n}`:""}_getCellWidths(e,i=!0){if(!i&&this._cachedCellWidths.length)return this._cachedCellWidths;let n=[],r=e.children;for(let o=0;o0;o--)i[o]&&(n[o]=r,r+=e[o]);return n}};var gf=new D("CDK_SPL");var Lv=(()=>{let e=class e{constructor(n,r){this.viewContainer=n,this.elementRef=r;let o=y(Pn);o._rowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(h(Je),h(O))},e.\u0275dir=R({type:e,selectors:[["","rowOutlet",""]],standalone:!0});let t=e;return t})(),jv=(()=>{let e=class e{constructor(n,r){this.viewContainer=n,this.elementRef=r;let o=y(Pn);o._headerRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(h(Je),h(O))},e.\u0275dir=R({type:e,selectors:[["","headerRowOutlet",""]],standalone:!0});let t=e;return t})(),Vv=(()=>{let e=class e{constructor(n,r){this.viewContainer=n,this.elementRef=r;let o=y(Pn);o._footerRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(h(Je),h(O))},e.\u0275dir=R({type:e,selectors:[["","footerRowOutlet",""]],standalone:!0});let t=e;return t})(),Bv=(()=>{let e=class e{constructor(n,r){this.viewContainer=n,this.elementRef=r;let o=y(Pn);o._noDataRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(h(Je),h(O))},e.\u0275dir=R({type:e,selectors:[["","noDataRowOutlet",""]],standalone:!0});let t=e;return t})();var zv=(()=>{let e=class e{_getCellRole(){if(this._cellRoleInternal===void 0){let n=this._elementRef.nativeElement.getAttribute("role"),r=n==="grid"||n==="treegrid"?"gridcell":"cell";this._cellRoleInternal=this._isNativeHtmlTable&&r==="cell"?null:r}return this._cellRoleInternal}get trackBy(){return this._trackByFn}set trackBy(n){this._trackByFn=n}get dataSource(){return this._dataSource}set dataSource(n){this._dataSource!==n&&this._switchDataSource(n)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(n){this._multiTemplateDataRows=n,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(n){this._fixedLayout=n,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(n,r,o,s,a,l,c,d,u,f,m,p){this._differs=n,this._changeDetectorRef=r,this._elementRef=o,this._dir=a,this._platform=c,this._viewRepeater=d,this._coalescedStyleScheduler=u,this._viewportRuler=f,this._stickyPositioningListener=m,this._onDestroy=new M,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._hasAllOutlets=!1,this._hasInitialized=!1,this._cellRoleInternal=void 0,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new G,this.viewChange=new rt({start:0,end:Number.MAX_VALUE}),this._injector=y(me),s||o.nativeElement.setAttribute("role","table"),this._document=l,this._isServer=!c.isBrowser,this._isNativeHtmlTable=o.nativeElement.nodeName==="TABLE"}ngOnInit(){this._setupStickyStyler(),this._dataDiffer=this._differs.find([]).create((n,r)=>this.trackBy?this.trackBy(r.dataIndex,r.data):r),this._viewportRuler.change().pipe(fe(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(n=>{n?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),$u(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();let n=this._dataDiffer.diff(this._renderRows);if(!n){this._updateNoDataRow(),this.contentChanged.next();return}let r=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(n,r,(o,s,a)=>this._getEmbeddedViewArgs(o.item,a),o=>o.item.data,o=>{o.operation===Is.INSERTED&&o.context&&this._renderCellTemplateForItem(o.record.item.rowDef,o.context)}),this._updateRowIndexContext(),n.forEachIdentityChange(o=>{let s=r.get(o.currentIndex);s.context.$implicit=o.item.data}),this._updateNoDataRow(),cn(()=>{this.updateStickyColumnStyles()},{injector:this._injector}),this.contentChanged.next()}addColumnDef(n){this._customColumnDefs.add(n)}removeColumnDef(n){this._customColumnDefs.delete(n)}addRowDef(n){this._customRowDefs.add(n)}removeRowDef(n){this._customRowDefs.delete(n)}addHeaderRowDef(n){this._customHeaderRowDefs.add(n),this._headerRowDefChanged=!0}removeHeaderRowDef(n){this._customHeaderRowDefs.delete(n),this._headerRowDefChanged=!0}addFooterRowDef(n){this._customFooterRowDefs.add(n),this._footerRowDefChanged=!0}removeFooterRowDef(n){this._customFooterRowDefs.delete(n),this._footerRowDefChanged=!0}setNoDataRow(n){this._customNoDataRow=n}updateStickyHeaderRowStyles(){let n=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){let o=dE(this._headerRowOutlet,"thead");o&&(o.style.display=n.length?"":"none")}let r=this._headerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(n,["top"]),this._stickyStyler.stickRows(n,r,"top"),this._headerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyFooterRowStyles(){let n=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){let o=dE(this._footerRowOutlet,"tfoot");o&&(o.style.display=n.length?"":"none")}let r=this._footerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(n,["bottom"]),this._stickyStyler.stickRows(n,r,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,r),this._footerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyColumnStyles(){let n=this._getRenderedRows(this._headerRowOutlet),r=this._getRenderedRows(this._rowOutlet),o=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...n,...r,...o],["left","right"]),this._stickyColumnStylesNeedReset=!1),n.forEach((s,a)=>{this._addStickyColumnStyles([s],this._headerRowDefs[a])}),this._rowDefs.forEach(s=>{let a=[];for(let l=0;l{this._addStickyColumnStyles([s],this._footerRowDefs[a])}),Array.from(this._columnDefsByName.values()).forEach(s=>s.resetStickyChanged())}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs(),!this._headerRowDefs.length&&!this._footerRowDefs.length&&this._rowDefs.length;let r=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||r,this._forceRecalculateCellWidths=r,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){let n=[],r=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let o=0;o{let l=o&&o.has(a)?o.get(a):[];if(l.length){let c=l.shift();return c.dataIndex=r,c}else return{data:n,rowDef:a,dataIndex:r}})}_cacheColumnDefs(){this._columnDefsByName.clear(),ff(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(r=>{this._columnDefsByName.has(r.name),this._columnDefsByName.set(r.name,r)})}_cacheRowDefs(){this._headerRowDefs=ff(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=ff(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=ff(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);let n=this._rowDefs.filter(r=>!r.when);!this.multiTemplateDataRows&&n.length>1,this._defaultRowDef=n[0]}_renderUpdatedColumns(){let n=(a,l)=>a||!!l.getColumnsDiff(),r=this._rowDefs.reduce(n,!1);r&&this._forceRenderDataRows();let o=this._headerRowDefs.reduce(n,!1);o&&this._forceRenderHeaderRows();let s=this._footerRowDefs.reduce(n,!1);return s&&this._forceRenderFooterRows(),r||o||s}_switchDataSource(n){this._data=[],$u(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),n||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=n}_observeRenderChanges(){if(!this.dataSource)return;let n;$u(this.dataSource)?n=this.dataSource.connect(this):Tr(this.dataSource)?n=this.dataSource:Array.isArray(this.dataSource)&&(n=k(this.dataSource)),this._renderChangeSubscription=n.pipe(fe(this._onDestroy)).subscribe(r=>{this._data=r||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((n,r)=>this._renderRow(this._headerRowOutlet,n,r)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((n,r)=>this._renderRow(this._footerRowOutlet,n,r)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(n,r){let o=Array.from(r.columns||[]).map(l=>{let c=this._columnDefsByName.get(l);return c}),s=o.map(l=>l.sticky),a=o.map(l=>l.stickyEnd);this._stickyStyler.updateStickyColumns(n,s,a,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(n){let r=[];for(let o=0;o!s.when||s.when(r,n));else{let s=this._rowDefs.find(a=>a.when&&a.when(r,n))||this._defaultRowDef;s&&o.push(s)}return o.length,o}_getEmbeddedViewArgs(n,r){let o=n.rowDef,s={$implicit:n.data};return{templateRef:o.template,context:s,index:r}}_renderRow(n,r,o,s={}){let a=n.viewContainer.createEmbeddedView(r.template,s,o);return this._renderCellTemplateForItem(r,s),a}_renderCellTemplateForItem(n,r){for(let o of this._getCellTemplates(n))go.mostRecentCellOutlet&&go.mostRecentCellOutlet._viewContainer.createEmbeddedView(o,r);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){let n=this._rowOutlet.viewContainer;for(let r=0,o=n.length;r{let o=this._columnDefsByName.get(r);return n.extractCellTemplate(o)})}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){let n=(r,o)=>r||o.hasStickyChanged();this._headerRowDefs.reduce(n,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(n,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(n,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){let n=this._dir?this._dir.value:"ltr";this._stickyStyler=new Rv(this._isNativeHtmlTable,this.stickyCssClass,n,this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:k()).pipe(fe(this._onDestroy)).subscribe(r=>{this._stickyStyler.direction=r,this.updateStickyColumnStyles()})}_getOwnDefs(n){return n.filter(r=>!r._table||r._table===this)}_updateNoDataRow(){let n=this._customNoDataRow||this._noDataRow;if(!n)return;let r=this._rowOutlet.viewContainer.length===0;if(r===this._isShowingNoDataRow)return;let o=this._noDataRowOutlet.viewContainer;if(r){let s=o.createEmbeddedView(n.templateRef),a=s.rootNodes[0];s.rootNodes.length===1&&a?.nodeType===this._document.ELEMENT_NODE&&(a.setAttribute("role","row"),a.classList.add(n._contentClassName))}else o.clear();this._isShowingNoDataRow=r,this._changeDetectorRef.markForCheck()}};e.\u0275fac=function(r){return new(r||e)(h(Ii),h(Fe),h(O),xi("role"),h(bt,8),h(j),h(ye),h(ml),h(pf),h(pr),h(gf,12),h(A,8))},e.\u0275cmp=P({type:e,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(r,o,s){if(r&1&&(Be(s,mE,5),Be(s,Bs,5),Be(s,_f,5),Be(s,Ol,5),Be(s,Nv,5)),r&2){let a;Q(a=K())&&(o._noDataRow=a.first),Q(a=K())&&(o._contentColumnDefs=a),Q(a=K())&&(o._contentRowDefs=a),Q(a=K())&&(o._contentHeaderRowDefs=a),Q(a=K())&&(o._contentFooterRowDefs=a)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(r,o){r&2&&xe("cdk-table-fixed-layout",o.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:[2,"multiTemplateDataRows","multiTemplateDataRows",te],fixedLayout:[2,"fixedLayout","fixedLayout",te]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],standalone:!0,features:[Ne([{provide:Pn,useExisting:e},{provide:ml,useClass:Ss},{provide:pf,useClass:Ov},{provide:gf,useValue:null}]),Ve,L],ngContentSelectors:kj,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(r,o){r&1&&(et(Oj),_e(0),_e(1,1),B(2,Nj,1,0)(3,Fj,7,0)(4,Pj,4,0)),r&2&&(E(2),be(o._isServer?2:-1),E(),be(o._isNativeHtmlTable?3:4))},dependencies:[jv,Lv,Bv,Vv],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2});let t=e;return t})();function ff(t,e){return t.concat(Array.from(e))}function dE(t,e){let i=e.toUpperCase(),n=t.viewContainer.element.nativeElement;for(;n;){let r=n.nodeType===1?n.nodeName:null;if(r===i)return n;if(r==="TABLE")break;n=n.parentNode}return null}var Lj=[[["caption"]],[["colgroup"],["col"]],"*"],jj=["caption","colgroup, col","*"];function Vj(t,e){t&1&&_e(0,2)}function Bj(t,e){t&1&&(v(0,"thead",0),Pt(1,1),b(),v(2,"tbody",2),Pt(3,3)(4,4),b(),v(5,"tfoot",0),Pt(6,5),b())}function zj(t,e){t&1&&Pt(0,1)(1,3)(2,4)(3,5)}var yf=(()=>{let e=class e extends zv{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275cmp=P({type:e,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(r,o){r&2&&xe("mdc-table-fixed-layout",o.fixedLayout)},exportAs:["matTable"],standalone:!0,features:[Ne([{provide:zv,useExisting:e},{provide:Pn,useExisting:e},{provide:pf,useClass:Ov},{provide:ml,useClass:Ss},{provide:gf,useValue:null}]),ve,L],ngContentSelectors:jj,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(r,o){r&1&&(et(Lj),_e(0),_e(1,1),B(2,Vj,1,0)(3,Bj,7,0)(4,zj,4,0)),r&2&&(E(2),be(o._isServer?2:-1),E(),be(o._isNativeHtmlTable?3:4))},dependencies:[jv,Lv,Bv,Vv],styles:[".mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color)}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-header-headline-font, Roboto, sans-serif);line-height:var(--mat-table-header-headline-line-height);font-size:var(--mat-table-header-headline-size, 14px);font-weight:var(--mat-table-header-headline-weight, 500)}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, Roboto, sans-serif);line-height:var(--mat-table-row-item-label-text-line-height);font-size:var(--mat-table-row-item-label-text-size, 14px);font-weight:var(--mat-table-row-item-label-text-weight)}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-footer-supporting-text-font, Roboto, sans-serif);line-height:var(--mat-table-footer-supporting-text-line-height);font-size:var(--mat-table-footer-supporting-text-size, 14px);font-weight:var(--mat-table-footer-supporting-text-weight);letter-spacing:var(--mat-table-footer-supporting-text-tracking)}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking);font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking);line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking)}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2});let t=e;return t})(),wf=(()=>{let e=class e extends vf{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","matCellDef",""]],standalone:!0,features:[Ne([{provide:vf,useExisting:e}]),ve]});let t=e;return t})(),xf=(()=>{let e=class e extends bf{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","matHeaderCellDef",""]],standalone:!0,features:[Ne([{provide:bf,useExisting:e}]),ve]});let t=e;return t})();var Df=(()=>{let e=class e extends Bs{get name(){return this._name}set name(n){this._setNameInput(n)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","matColumnDef",""]],inputs:{name:[0,"matColumnDef","name"]},standalone:!0,features:[Ne([{provide:Bs,useExisting:e},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:e}]),ve]});let t=e;return t})(),Cf=(()=>{let e=class e extends fE{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],standalone:!0,features:[ve]});let t=e;return t})();var Ef=(()=>{let e=class e extends hE{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],standalone:!0,features:[ve]});let t=e;return t})();var If=(()=>{let e=class e extends Ol{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","matHeaderRowDef",""]],inputs:{columns:[0,"matHeaderRowDef","columns"],sticky:[2,"matHeaderRowDefSticky","sticky",te]},standalone:!0,features:[Ne([{provide:Ol,useExisting:e}]),Ve,ve]});let t=e;return t})();var Sf=(()=>{let e=class e extends _f{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","matRowDef",""]],inputs:{columns:[0,"matRowDefColumns","columns"],when:[0,"matRowDefWhen","when"]},standalone:!0,features:[Ne([{provide:_f,useExisting:e}]),ve]});let t=e;return t})(),Mf=(()=>{let e=class e extends Fv{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275cmp=P({type:e,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],standalone:!0,features:[Ne([{provide:Fv,useExisting:e}]),ve,L],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Pt(0,0)},dependencies:[go],encapsulation:2});let t=e;return t})();var Tf=(()=>{let e=class e extends Pv{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275cmp=P({type:e,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],standalone:!0,features:[Ne([{provide:Pv,useExisting:e}]),ve,L],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Pt(0,0)},dependencies:[go],encapsulation:2});let t=e;return t})();var pE=(()=>{let e=class e{constructor(n){this.http=n,this.log_list_url="/api/log/content/list",this.logs=Aa({list:[],total:0,page:0,size:0})}get_logs(){return this.http.get(this.log_list_url).pipe().subscribe(n=>{n.status===200?this.logs.set(Z(w({},this.logs()),{total:n.data.total,list:n.data.list})):this.logs.set(Z(w({},this.logs()),{list:[]}))})}};e.\u0275fac=function(r){return new(r||e)(g(eo))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Hj(t,e){t&1&&(v(0,"th",12),T(1,"\u7528\u6237"),b())}function $j(t,e){if(t&1&&(v(0,"td",13),T(1),b()),t&2){let i=e.$implicit;E(),Le(" ",i.username,"")}}function Wj(t,e){t&1&&(v(0,"th",12),T(1,"\u65F6\u95F4"),b())}function Gj(t,e){if(t&1&&(v(0,"td",13),T(1),Yw(2,"date"),b()),t&2){let i=e.$implicit;E(),Le(" ",Zw(2,1,i.created_at,"yyyy-MM-dd HH:mm:SS"),"")}}function qj(t,e){t&1&&(v(0,"th",12),T(1,"\u65E5\u5FD7\u7C7B\u578B"),b())}function Yj(t,e){if(t&1&&(v(0,"td",13),T(1),b()),t&2){let i=e.$implicit;E(),Le(" ",i.type.label,"")}}function Zj(t,e){t&1&&(v(0,"th",12),T(1,"\u64CD\u4F5C"),b())}function Qj(t,e){if(t&1&&ie(0,"td",14),t&2){let i=e.$implicit,n=$();U("innerHTML",n.decodeLog(i.html),z0)}}function Kj(t,e){t&1&&ie(0,"tr",15)}function Xj(t,e){t&1&&ie(0,"tr",16)}var gE=(()=>{let e=class e{constructor(n){this.log_srv=n,this.displayedColumns=["username","created_at","type","html"]}ngOnInit(){this.log_srv.get_logs()}decodeLog(n){return lE(n)}};e.\u0275fac=function(r){return new(r||e)(h(pE))},e.\u0275cmp=P({type:e,selectors:[["app-log"]],standalone:!0,features:[L],decls:17,vars:3,consts:[[1,"logs"],[1,"table"],["mat-table","",1,"mat-elevation-z8",3,"dataSource"],["matColumnDef","username"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","created_at"],["matColumnDef","type"],["matColumnDef","html"],["mat-cell","",3,"innerHTML",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-cell","",3,"innerHTML"],["mat-header-row",""],["mat-row",""]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div",1)(2,"table",2),Nt(3,3),B(4,Hj,2,0,"th",4)(5,$j,2,1,"td",5),Ft(),Nt(6,6),B(7,Wj,2,0,"th",4)(8,Gj,3,4,"td",5),Ft(),Nt(9,7),B(10,qj,2,0,"th",4)(11,Yj,2,1,"td",5),Ft(),Nt(12,8),B(13,Zj,2,0,"th",4)(14,Qj,1,1,"td",9),Ft(),B(15,Kj,1,0,"tr",10)(16,Xj,1,0,"tr",11),b()()()),r&2&&(E(2),U("dataSource",o.log_srv.logs().list),E(13),U("matHeaderRowDef",o.displayedColumns),E(),U("matRowDefColumns",o.displayedColumns))},dependencies:[tt,gx,yf,Df,Cf,Ef,wf,xf,Mf,If,Sf,Tf],styles:["[_nghost-%COMP%]{width:100%;overflow-x:auto}[_nghost-%COMP%] td>div.nf-op-log>span.nf-op-log-keyword{color:var(--my-primary-color);text-decoration:underline;font-weight:700;margin:0 1rem}"]});let t=e;return t})();var eV=["trigger"],tV=["panel"],nV=[[["mat-select-trigger"]],"*"],iV=["mat-select-trigger","*"];function rV(t,e){if(t&1&&(v(0,"span",4),T(1),b()),t&2){let i=$();E(),At(i.placeholder)}}function oV(t,e){t&1&&_e(0)}function sV(t,e){if(t&1&&(v(0,"span",11),T(1),b()),t&2){let i=$(2);E(),At(i.triggerValue)}}function aV(t,e){if(t&1&&(v(0,"span",5),B(1,oV,1,0)(2,sV,2,1,"span",11),b()),t&2){let i=$();E(),be(i.customTrigger?1:2)}}function lV(t,e){if(t&1){let i=lt();v(0,"div",12,1),z("@transformPanel.done",function(r){Te(i);let o=$();return Ae(o._panelDoneAnimatingStream.next(r.toState))})("keydown",function(r){Te(i);let o=$();return Ae(o._handleKeydown(r))}),_e(2,1),b()}if(t&2){let i=$();Ww("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",i._getPanelTheme(),""),U("ngClass",i.panelClass)("@transformPanel","showing"),De("id",i.id+"-panel")("aria-multiselectable",i.multiple)("aria-label",i.ariaLabel||null)("aria-labelledby",i._getPanelAriaLabelledby())}}var cV={transformPanelWrap:ai("transformPanelWrap",[tn("* => void",eC("@transformPanel",[JD()],{optional:!0}))]),transformPanel:ai("transformPanel",[li("void",dt({opacity:0,transform:"scale(1, 0.8)"})),tn("void => showing",bn("120ms cubic-bezier(0, 0, 0.2, 1)",dt({opacity:1,transform:"scale(1, 1)"}))),tn("* => void",bn("100ms linear",dt({opacity:0})))])};var vE=0,dV=new D("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.reposition()}});var uV=new D("MAT_SELECT_CONFIG");var fV=new D("MatSelectTrigger"),Uv=class{constructor(e,i){this.source=e,this.value=i}},zs=(()=>{let e=class e{_scrollOptionIntoView(n){let r=this.options.toArray()[n];if(r){let o=this.panel.nativeElement,s=qD(n,this.options,this.optionGroups),a=r._getHostElement();n===0&&s===1?o.scrollTop=0:o.scrollTop=YD(a.offsetTop,a.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(n){return new Uv(this,n)}get focused(){return this._focused||this._panelOpen}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(n){this._hideSingleSelectionIndicator=n,this._syncParentProperties()}get placeholder(){return this._placeholder}set placeholder(n){this._placeholder=n,this.stateChanges.next()}get required(){return this._required??this.ngControl?.control?.hasValidator(Ns.required)??!1}set required(n){this._required=n,this.stateChanges.next()}get multiple(){return this._multiple}set multiple(n){this._selectionModel,this._multiple=n}get compareWith(){return this._compareWith}set compareWith(n){this._compareWith=n,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(n){this._assignValue(n)&&this._onChange(n)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(n){this._errorStateTracker.matcher=n}get id(){return this._id}set id(n){this._id=n||this._uid,this.stateChanges.next()}get errorState(){return this._errorStateTracker.errorState}set errorState(n){this._errorStateTracker.errorState=n}constructor(n,r,o,s,a,l,c,d,u,f,m,p,_,x){this._viewportRuler=n,this._changeDetectorRef=r,this._elementRef=a,this._dir=l,this._parentFormField=u,this.ngControl=f,this._liveAnnouncer=_,this._defaultOptions=x,this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}],this._panelOpen=!1,this._compareWith=(I,V)=>I===V,this._uid=`mat-select-${vE++}`,this._triggerAriaLabelledBy=null,this._destroy=new M,this.stateChanges=new M,this.disableAutomaticLabeling=!0,this._onChange=()=>{},this._onTouched=()=>{},this._valueId=`mat-select-value-${vE++}`,this._panelDoneAnimatingStream=new M,this._overlayPanelClass=this._defaultOptions?.overlayPanelClass||"",this._focused=!1,this.controlType="mat-select",this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this._hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1,this._multiple=!1,this.disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1,this.ariaLabel="",this.panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto",this._initialized=new M,this.optionSelectionChanges=Gt(()=>{let I=this.options;return I?I.changes.pipe(yt(I),We(()=>gt(...I.map(V=>V.onSelectionChange)))):this._initialized.pipe(We(()=>this.optionSelectionChanges))}),this.openedChange=new G,this._openedStream=this.openedChange.pipe(ce(I=>I),N(()=>{})),this._closedStream=this.openedChange.pipe(ce(I=>!I),N(()=>{})),this.selectionChange=new G,this.valueChange=new G,this._trackedModal=null,this._skipPredicate=I=>this.panelOpen?!1:I.disabled,this.ngControl&&(this.ngControl.valueAccessor=this),x?.typeaheadDebounceInterval!=null&&(this.typeaheadDebounceInterval=x.typeaheadDebounceInterval),this._errorStateTracker=new Ds(s,f,d,c,this.stateChanges),this._scrollStrategyFactory=p,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(m)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Hu(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(Fo(),fe(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen)),this._viewportRuler.change().pipe(fe(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(fe(this._destroy)).subscribe(n=>{n.added.forEach(r=>r.select()),n.removed.forEach(r=>r.deselect())}),this.options.changes.pipe(yt(null),fe(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){let n=this._getTriggerAriaLabelledby(),r=this.ngControl;if(n!==this._triggerAriaLabelledBy){let o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=n,n?o.setAttribute("aria-labelledby",n):o.removeAttribute("aria-labelledby")}r&&(this._previousControl!==r.control&&(this._previousControl!==void 0&&r.disabled!==null&&r.disabled!==this.disabled&&(this.disabled=r.disabled),this._previousControl=r.control),this.updateErrorState())}ngOnChanges(n){(n.disabled||n.userAriaDescribedBy)&&this.stateChanges.next(),n.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_applyModalPanelOwnership(){let n=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!n)return;let r=`${this.id}-panel`;this._trackedModal&&Fu(this._trackedModal,"aria-owns",r),Xg(n,"aria-owns",r),this._trackedModal=n}_clearFromModal(){if(!this._trackedModal)return;let n=`${this.id}-panel`;Fu(this._trackedModal,"aria-owns",n),this._trackedModal=null}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next())}writeValue(n){this._assignValue(n)}registerOnChange(n){this._onChange=n}registerOnTouched(n){this._onTouched=n}setDisabledState(n){this.disabled=n,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){let n=this._selectionModel.selected.map(r=>r.viewValue);return this._isRtl()&&n.reverse(),n.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return this._dir?this._dir.value==="rtl":!1}_handleKeydown(n){this.disabled||(this.panelOpen?this._handleOpenKeydown(n):this._handleClosedKeydown(n))}_handleClosedKeydown(n){let r=n.keyCode,o=r===40||r===38||r===37||r===39,s=r===13||r===32,a=this._keyManager;if(!a.isTyping()&&s&&!Ct(n)||(this.multiple||n.altKey)&&o)n.preventDefault(),this.open();else if(!this.multiple){let l=this.selected;a.onKeydown(n);let c=this.selected;c&&l!==c&&this._liveAnnouncer.announce(c.viewValue,1e4)}}_handleOpenKeydown(n){let r=this._keyManager,o=n.keyCode,s=o===40||o===38,a=r.isTyping();if(s&&n.altKey)n.preventDefault(),this.close();else if(!a&&(o===13||o===32)&&r.activeItem&&!Ct(n))n.preventDefault(),r.activeItem._selectViaInteraction();else if(!a&&this._multiple&&o===65&&n.ctrlKey){n.preventDefault();let l=this.options.some(c=>!c.disabled&&!c.selected);this.options.forEach(c=>{c.disabled||(l?c.select():c.deselect())})}else{let l=r.activeItemIndex;r.onKeydown(n),this._multiple&&s&&n.shiftKey&&r.activeItem&&r.activeItemIndex!==l&&r.activeItem._selectViaInteraction()}}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(Ee(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(n){if(this.options.forEach(r=>r.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&n)Array.isArray(n),n.forEach(r=>this._selectOptionByValue(r)),this._sortValues();else{let r=this._selectOptionByValue(n);r?this._keyManager.updateActiveItem(r):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(n){let r=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return o.value!=null&&this._compareWith(o.value,n)}catch{return!1}});return r&&this._selectionModel.select(r),r}_assignValue(n){return n!==this._value||this._multiple&&Array.isArray(n)?(this.options&&this._setSelectionByValue(n),this._value=n,!0):!1}_getOverlayWidth(n){return this.panelWidth==="auto"?(n instanceof pl?n.elementRef:n||this._elementRef).nativeElement.getBoundingClientRect().width:this.panelWidth===null?"":this.panelWidth}_syncParentProperties(){if(this.options)for(let n of this.options)n._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new ku(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){let n=gt(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(fe(n)).subscribe(r=>{this._onSelect(r.source,r.isUserInput),r.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),gt(...this.options.map(r=>r._stateChanges)).pipe(fe(n)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(n,r){let o=this._selectionModel.isSelected(n);n.value==null&&!this._multiple?(n.deselect(),this._selectionModel.clear(),this.value!=null&&this._propagateChanges(n.value)):(o!==n.selected&&(n.selected?this._selectionModel.select(n):this._selectionModel.deselect(n)),r&&this._keyManager.setActiveItem(n),this.multiple&&(this._sortValues(),r&&this.focus())),o!==this._selectionModel.isSelected(n)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){let n=this.options.toArray();this._selectionModel.sort((r,o)=>this.sortComparator?this.sortComparator(r,o,n):n.indexOf(r)-n.indexOf(o)),this.stateChanges.next()}}_propagateChanges(n){let r;this.multiple?r=this.selected.map(o=>o.value):r=this.selected?this.selected.value:n,this._value=r,this.valueChange.emit(r),this._onChange(r),this.selectionChange.emit(this._getChangeEvent(r)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let n=-1;for(let r=0;r0}focus(n){this._elementRef.nativeElement.focus(n)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;let n=this._parentFormField?.getLabelId(),r=n?n+" ":"";return this.ariaLabelledby?r+this.ariaLabelledby:n}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let n=this._parentFormField?.getLabelId(),r=(n?n+" ":"")+this._valueId;return this.ariaLabelledby&&(r+=" "+this.ariaLabelledby),r}_panelDoneAnimating(n){this.openedChange.emit(n)}setDescribedByIds(n){n.length?this._elementRef.nativeElement.setAttribute("aria-describedby",n.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}};e.\u0275fac=function(r){return new(r||e)(h(pr),h(Fe),h(A),h(Vu),h(O),h(bt,8),h(Il,8),h(Ml,8),h(Rl,8),h(Fn,10),xi("tabindex"),h(dV),h(Lu),h(uV,8))},e.\u0275cmp=P({type:e,selectors:[["mat-select"]],contentQueries:function(r,o,s){if(r&1&&(Be(s,fV,5),Be(s,oi,5),Be(s,av,5)),r&2){let a;Q(a=K())&&(o.customTrigger=a.first),Q(a=K())&&(o.options=a),Q(a=K())&&(o.optionGroups=a)}},viewQuery:function(r,o){if(r&1&&(Ye(eV,5),Ye(tV,5),Ye(bv,5)),r&2){let s;Q(s=K())&&(o.trigger=s.first),Q(s=K())&&(o.panel=s.first),Q(s=K())&&(o._overlayDir=s.first)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(r,o){r&1&&z("keydown",function(a){return o._handleKeydown(a)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),r&2&&(De("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),xe("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",te],disableRipple:[2,"disableRipple","disableRipple",te],tabIndex:[2,"tabIndex","tabIndex",n=>n==null?0:ni(n)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",te],placeholder:"placeholder",required:[2,"required","required",te],multiple:[2,"multiple","multiple",te],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",te],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",ni],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],standalone:!0,features:[Ne([{provide:Al,useExisting:e},{provide:sv,useExisting:e}]),Ve,Xe,L],ngContentSelectors:iV,decls:11,vars:8,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"backdropClick","attach","detach","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"keydown","ngClass"]],template:function(r,o){if(r&1){let s=lt();et(nV),v(0,"div",2,0),z("click",function(){return Te(s),Ae(o.open())}),v(3,"div",3),B(4,rV,2,1,"span",4)(5,aV,3,1,"span",5),b(),v(6,"div",6)(7,"div",7),wi(),v(8,"svg",8),ie(9,"path",9),b()()()(),B(10,lV,3,9,"ng-template",10),z("backdropClick",function(){return Te(s),Ae(o.close())})("attach",function(){return Te(s),Ae(o._onAttached())})("detach",function(){return Te(s),Ae(o.close())})}if(r&2){let s=Qr(1);E(3),De("id",o._valueId),E(),be(o.empty?4:5),E(6),U("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||s)("cdkConnectedOverlayOpen",o.panelOpen)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)}},dependencies:[pl,bv,Jd],styles:['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color);font-family:var(--mat-select-trigger-text-font);line-height:var(--mat-select-trigger-text-line-height);font-size:var(--mat-select-trigger-text-size);font-weight:var(--mat-select-trigger-text-weight);letter-spacing:var(--mat-select-trigger-text-tracking)}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color)}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color)}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color)}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}'],encapsulation:2,data:{animation:[cV.transformPanel]},changeDetection:0});let t=e;return t})();function hV(t,e){}var vo=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}};var $v=(()=>{let e=class e extends hr{constructor(n,r,o,s,a,l,c,d){super(),this._elementRef=n,this._focusTrapFactory=r,this._config=s,this._interactivityChecker=a,this._ngZone=l,this._overlayRef=c,this._focusMonitor=d,this._platform=y(ye),this._focusTrap=null,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this._ariaLabelledByQueue=[],this._changeDetectorRef=y(Fe),this.attachDomPortal=u=>{this._portalOutlet.hasAttached();let f=this._portalOutlet.attachDomPortal(u);return this._contentAttached(),f},this._document=o,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(n){this._ariaLabelledByQueue.push(n),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(n){let r=this._ariaLabelledByQueue.indexOf(n);r>-1&&(this._ariaLabelledByQueue.splice(r,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(n){this._portalOutlet.hasAttached();let r=this._portalOutlet.attachComponentPortal(n);return this._contentAttached(),r}attachTemplatePortal(n){this._portalOutlet.hasAttached();let r=this._portalOutlet.attachTemplatePortal(n);return this._contentAttached(),r}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(n,r){this._interactivityChecker.isFocusable(n)||(n.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let o=()=>{n.removeEventListener("blur",o),n.removeEventListener("mousedown",o),n.removeAttribute("tabindex")};n.addEventListener("blur",o),n.addEventListener("mousedown",o)})),n.focus(r)}_focusByCssSelector(n,r){let o=this._elementRef.nativeElement.querySelector(n);o&&this._forceFocus(o,r)}_trapFocus(){let n=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||n.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElementWhenReady().then(r=>{r||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus);break}}_restoreFocus(){let n=this._config.restoreFocus,r=null;if(typeof n=="string"?r=this._document.querySelector(n):typeof n=="boolean"?r=n?this._elementFocusedBeforeDialogWasOpened:null:n&&(r=n),this._config.restoreFocus&&r&&typeof r.focus=="function"){let o=ol(),s=this._elementRef.nativeElement;(!o||o===this._document.body||o===s||s.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(r,this._closeInteractionType),this._closeInteractionType=null):r.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){let n=this._elementRef.nativeElement,r=ol();return n===r||n.contains(r)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=ol()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Pu),h(j,8),h(vo),h(al),h(A),h(Fi),h(On))},e.\u0275cmp=P({type:e,selectors:[["cdk-dialog-container"]],viewQuery:function(r,o){if(r&1&&Ye(mr,7),r&2){let s;Q(s=K())&&(o._portalOutlet=s.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(r,o){r&2&&De("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},standalone:!0,features:[ve,L],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(r,o){r&1&&B(0,hV,0,0,"ng-template",0)},dependencies:[mr],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2});let t=e;return t})(),kl=class{constructor(e,i){this.overlayRef=e,this.config=i,this.closed=new M,this.disableClose=i.disableClose,this.backdropClick=e.backdropClick(),this.keydownEvents=e.keydownEvents(),this.outsidePointerEvents=e.outsidePointerEvents(),this.id=i.id,this.keydownEvents.subscribe(n=>{n.keyCode===27&&!this.disableClose&&!Ct(n)&&(n.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=e.detachments().subscribe(()=>{i.closeOnOverlayDetachments!==!1&&this.close()})}close(e,i){if(this.containerInstance){let n=this.closed;this.containerInstance._closeInteractionType=i?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),n.next(e),n.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(e="",i=""){return this.overlayRef.updateSize({width:e,height:i}),this}addPanelClass(e){return this.overlayRef.addPanelClass(e),this}removePanelClass(e){return this.overlayRef.removePanelClass(e),this}},mV=new D("DialogScrollStrategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.block()}}),pV=new D("DialogData"),gV=new D("DefaultDialogConfig");var vV=0,bE=(()=>{let e=class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(n,r,o,s,a,l){this._overlay=n,this._injector=r,this._defaultOptions=o,this._parentDialog=s,this._overlayContainer=a,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new M,this._afterOpenedAtThisLevel=new M,this._ariaHiddenElements=new Map,this.afterAllClosed=Gt(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(yt(void 0))),this._scrollStrategy=l}open(n,r){let o=this._defaultOptions||new vo;r=w(w({},o),r),r.id=r.id||`cdk-dialog-${vV++}`,r.id&&this.getDialogById(r.id);let s=this._getOverlayConfig(r),a=this._overlay.create(s),l=new kl(a,r),c=this._attachContainer(a,l,r);return l.containerInstance=c,this._attachDialogContent(n,l,c,r),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(l),l.closed.subscribe(()=>this._removeOpenDialog(l,!0)),this.afterOpened.next(l),l}closeAll(){Hv(this.openDialogs,n=>n.close())}getDialogById(n){return this.openDialogs.find(r=>r.id===n)}ngOnDestroy(){Hv(this._openDialogsAtThisLevel,n=>{n.config.closeOnDestroy===!1&&this._removeOpenDialog(n,!1)}),Hv(this._openDialogsAtThisLevel,n=>n.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(n){let r=new ci({positionStrategy:n.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:n.scrollStrategy||this._scrollStrategy(),panelClass:n.panelClass,hasBackdrop:n.hasBackdrop,direction:n.direction,minWidth:n.minWidth,minHeight:n.minHeight,maxWidth:n.maxWidth,maxHeight:n.maxHeight,width:n.width,height:n.height,disposeOnNavigation:n.closeOnNavigation});return n.backdropClass&&(r.backdropClass=n.backdropClass),r}_attachContainer(n,r,o){let s=o.injector||o.viewContainerRef?.injector,a=[{provide:vo,useValue:o},{provide:kl,useValue:r},{provide:Fi,useValue:n}],l;o.container?typeof o.container=="function"?l=o.container:(l=o.container.type,a.push(...o.container.providers(o))):l=$v;let c=new kn(l,o.viewContainerRef,me.create({parent:s||this._injector,providers:a}),o.componentFactoryResolver);return n.attach(c).instance}_attachDialogContent(n,r,o,s){if(n instanceof Ge){let a=this._createInjector(s,r,o,void 0),l={$implicit:s.data,dialogRef:r};s.templateContext&&(l=w(w({},l),typeof s.templateContext=="function"?s.templateContext():s.templateContext)),o.attachTemplatePortal(new Nn(n,null,l,a))}else{let a=this._createInjector(s,r,o,this._injector),l=o.attachComponentPortal(new kn(n,s.viewContainerRef,a,s.componentFactoryResolver));r.componentRef=l,r.componentInstance=l.instance}}_createInjector(n,r,o,s){let a=n.injector||n.viewContainerRef?.injector,l=[{provide:pV,useValue:n.data},{provide:kl,useValue:r}];return n.providers&&(typeof n.providers=="function"?l.push(...n.providers(r,n,o)):l.push(...n.providers)),n.direction&&(!a||!a.get(bt,null,{optional:!0}))&&l.push({provide:bt,useValue:{value:n.direction,change:k()}}),me.create({parent:a||s,providers:l})}_removeOpenDialog(n,r){let o=this.openDialogs.indexOf(n);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((s,a)=>{s?a.setAttribute("aria-hidden",s):a.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),r&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let n=this._overlayContainer.getContainerElement();if(n.parentElement){let r=n.parentElement.children;for(let o=r.length-1;o>-1;o--){let s=r[o];s!==n&&s.nodeName!=="SCRIPT"&&s.nodeName!=="STYLE"&&!s.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(s,s.getAttribute("aria-hidden")),s.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let n=this._parentDialog;return n?n._getAfterAllClosed():this._afterAllClosedAtThisLevel}};e.\u0275fac=function(r){return new(r||e)(g(nt),g(me),g(gV,8),g(e,12),g(Ts),g(mV))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Hv(t,e){let i=t.length;for(;i--;)e(t[i])}function bV(t,e){}var Nl=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}},Wv="mdc-dialog--open",_E="mdc-dialog--opening",yE="mdc-dialog--closing",_V=150,yV=75,wV=(()=>{let e=class e extends $v{constructor(n,r,o,s,a,l,c,d,u){super(n,r,o,s,a,l,c,u),this._animationMode=d,this._animationStateChanged=new G,this._animationsEnabled=this._animationMode!=="NoopAnimations",this._actionSectionCount=0,this._hostElement=this._elementRef.nativeElement,this._enterAnimationDuration=this._animationsEnabled?xE(this._config.enterAnimationDuration)??_V:0,this._exitAnimationDuration=this._animationsEnabled?xE(this._config.exitAnimationDuration)??yV:0,this._animationTimer=null,this._isDestroyed=!1,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(wE,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(_E,Wv)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Wv),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(Wv),this._animationsEnabled?(this._hostElement.style.setProperty(wE,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(yE)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(n){this._actionSectionCount+=n,this._changeDetectorRef.markForCheck()}_clearAnimationClasses(){this._hostElement.classList.remove(_E,yE)}_waitForAnimationToComplete(n,r){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(r,n)}_requestAnimationFrame(n){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(n):n()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(n){this._isDestroyed||(this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:n}))}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer),this._isDestroyed=!0}attachComponentPortal(n){let r=super.attachComponentPortal(n);return r.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),r}};e.\u0275fac=function(r){return new(r||e)(h(O),h(Pu),h(j,8),h(Nl),h(al),h(A),h(Fi),h(ft,8),h(On))},e.\u0275cmp=P({type:e,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(r,o){r&2&&(Jn("id",o._config.id),De("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),xe("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},standalone:!0,features:[ve,L],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div",1),B(2,bV,0,0,"ng-template",2),b()())},dependencies:[mr],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 80vw);min-width:var(--mat-dialog-container-min-width, 0)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, 80vw)}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));border-radius:var(--mdc-dialog-container-shape, 4px);background-color:var(--mdc-dialog-container-color, white)}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 0 24px 9px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87));font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6));font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 8px);justify-content:var(--mat-dialog-actions-alignment, start)}.cdk-high-contrast-active .mat-mdc-dialog-actions{border-top-color:CanvasText}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}'],encapsulation:2});let t=e;return t})(),wE="--mat-dialog-transition-duration";function xE(t){return t==null?null:typeof t=="number"?t:t.endsWith("ms")?Ni(t.substring(0,t.length-2)):t.endsWith("s")?Ni(t.substring(0,t.length-1))*1e3:t==="0"?0:null}var Af=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(Af||{}),Bi=class{constructor(e,i,n){this._ref=e,this._containerInstance=n,this._afterOpened=new M,this._beforeClosed=new M,this._state=Af.OPEN,this.disableClose=i.disableClose,this.id=e.id,e.addPanelClass("mat-mdc-dialog-panel"),n._animationStateChanged.pipe(ce(r=>r.state==="opened"),Ee(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),n._animationStateChanged.pipe(ce(r=>r.state==="closed"),Ee(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),e.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),gt(this.backdropClick(),this.keydownEvents().pipe(ce(r=>r.keyCode===27&&!this.disableClose&&!Ct(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),DE(this,r.type==="keydown"?"keyboard":"mouse"))})}close(e){this._result=e,this._containerInstance._animationStateChanged.pipe(ce(i=>i.state==="closing"),Ee(1)).subscribe(i=>{this._beforeClosed.next(e),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=Af.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(e){let i=this._ref.config.positionStrategy;return e&&(e.left||e.right)?e.left?i.left(e.left):i.right(e.right):i.centerHorizontally(),e&&(e.top||e.bottom)?e.top?i.top(e.top):i.bottom(e.bottom):i.centerVertically(),this._ref.updatePosition(),this}updateSize(e="",i=""){return this._ref.updateSize(e,i),this}addPanelClass(e){return this._ref.addPanelClass(e),this}removePanelClass(e){return this._ref.removePanelClass(e),this}getState(){return this._state}_finishDialogClose(){this._state=Af.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function DE(t,e,i){return t._closeInteractionType=e,t.close(i)}var Fl=new D("MatMdcDialogData"),xV=new D("mat-mdc-dialog-default-options"),DV=new D("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.block()}});var CV=0,Rf=(()=>{let e=class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let n=this._parentDialog;return n?n._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(n,r,o,s,a,l,c,d){this._overlay=n,this._defaultOptions=s,this._scrollStrategy=a,this._parentDialog=l,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new M,this._afterOpenedAtThisLevel=new M,this.dialogConfigClass=Nl,this.afterAllClosed=Gt(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(yt(void 0))),this._dialog=r.get(bE),this._dialogRefConstructor=Bi,this._dialogContainerType=wV,this._dialogDataToken=Fl}open(n,r){let o;r=w(w({},this._defaultOptions||new Nl),r),r.id=r.id||`mat-mdc-dialog-${CV++}`,r.scrollStrategy=r.scrollStrategy||this._scrollStrategy();let s=this._dialog.open(n,Z(w({},r),{positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:r},{provide:vo,useValue:r}]},templateContext:()=>({dialogRef:o}),providers:(a,l,c)=>(o=new this._dialogRefConstructor(a,r,c),o.updatePosition(r?.position),[{provide:this._dialogContainerType,useValue:c},{provide:this._dialogDataToken,useValue:l.data},{provide:this._dialogRefConstructor,useValue:o}])}));return o.componentRef=s.componentRef,o.componentInstance=s.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{let a=this.openDialogs.indexOf(o);a>-1&&(this.openDialogs.splice(a,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(n){return this.openDialogs.find(r=>r.id===n)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(n){let r=n.length;for(;r--;)n[r].close()}};e.\u0275fac=function(r){return new(r||e)(g(nt),g(me),g(Ai,8),g(xV,8),g(DV),g(e,12),g(Ts),g(ft,8))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),EV=0,Us=(()=>{let e=class e{constructor(n,r,o){this.dialogRef=n,this._elementRef=r,this._dialog=o,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=EE(this._elementRef,this._dialog.openDialogs))}ngOnChanges(n){let r=n._matDialogClose||n._matDialogCloseResult;r&&(this.dialogResult=r.currentValue)}_onButtonClick(n){DE(this.dialogRef,n.screenX===0&&n.screenY===0?"keyboard":"mouse",this.dialogResult)}};e.\u0275fac=function(r){return new(r||e)(h(Bi,8),h(O),h(Rf))},e.\u0275dir=R({type:e,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(r,o){r&1&&z("click",function(a){return o._onButtonClick(a)}),r&2&&De("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],standalone:!0,features:[Xe]});let t=e;return t})(),CE=(()=>{let e=class e{constructor(n,r,o){this._dialogRef=n,this._elementRef=r,this._dialog=o}ngOnInit(){this._dialogRef||(this._dialogRef=EE(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}};e.\u0275fac=function(r){return new(r||e)(h(Bi,8),h(O),h(Rf))},e.\u0275dir=R({type:e,standalone:!0});let t=e;return t})(),Hs=(()=>{let e=class e extends CE{constructor(){super(...arguments),this.id=`mat-mdc-dialog-title-${EV++}`}_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(r,o){r&2&&Jn("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],standalone:!0,features:[ve]});let t=e;return t})(),Of=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],standalone:!0,features:[Rw([cv])]});let t=e;return t})(),$s=(()=>{let e=class e extends CE{_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=at(e)))(o||e)}})(),e.\u0275dir=R({type:e,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(r,o){r&2&&xe("mat-mdc-dialog-actions-align-start",o.align==="start")("mat-mdc-dialog-actions-align-center",o.align==="center")("mat-mdc-dialog-actions-align-end",o.align==="end")},inputs:{align:"align"},standalone:!0,features:[ve]});let t=e;return t})();function EE(t,e){let i=t.nativeElement.parentElement;for(;i&&!i.classList.contains("mat-mdc-dialog-container");)i=i.parentElement;return i?e.find(n=>n.id===i.id):null}function IV(t,e){if(t&1&&(v(0,"mat-option",6),T(1),b()),t&2){let i=e.$implicit;U("value",i.value),E(),At(i.label)}}var IE=(()=>{let e=class e{constructor(n,r,o){this.msg_srv=n,this.user_srv=r,this.dialogRef=o,this.new_user={username:"",nickname:"",password:"",confirm_password:"",status:0,privileges:[]}}create(){if(this.new_user.username.length<3){this.msg_srv.warning("\u7528\u6237\u540D\u957F\u5EA6\u4E0D\u80FD\u5C0F\u4E8E3");return}if(this.new_user.password.length<8){this.msg_srv.warning("\u5BC6\u7801\u81F3\u5C118\u4F4D");return}if(!this.new_user.password.match(/[a-z]+/)){this.msg_srv.warning("\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD");return}if(!this.new_user.password.match(/[A-Z]+/)){this.msg_srv.warning("\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD");return}if(this.new_user.password!=this.new_user.confirm_password){this.msg_srv.warning("\u8F93\u5165\u7684\u4E24\u6B21\u5BC6\u7801\u4E0D\u540C");return}console.log("[D] before create new user, new_user=",this.new_user),this.user_srv.manage_user_create({username:this.new_user.username,password:this.new_user.password,status:this.new_user.status,privileges:this.new_user.privileges,role:100}).subscribe(n=>{n.status===200&&(this.msg_srv.success("\u521B\u5EFA\u7528\u6237\u6210\u529F"),this.dialogRef.close())})}};e.\u0275fac=function(r){return new(r||e)(h(gr),h(_n),h(Bi))},e.\u0275cmp=P({type:e,selectors:[["app-create-user-dialog"]],standalone:!0,features:[L],decls:34,vars:7,consts:[["mat-dialog-title",""],[1,"create-user-content"],["matInput","","placeholder","username","name","username",3,"ngModelChange","ngModel"],["matInput","","placeholder","password","type","password","name","password",3,"ngModelChange","ngModel"],["matInput","","placeholder","confirm password","type","password","name","confirm_password",3,"ngModelChange","ngModel"],["multiple","",3,"ngModelChange","ngModel"],[3,"value"],[3,"ngModelChange","ngModel"],["align","end"],["mat-raised-button","","mat-dialog-close",""],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(v(0,"h2",0),T(1,"\u65B0\u5EFA\u7528\u6237"),b(),v(2,"mat-dialog-content",1)(3,"mat-form-field")(4,"mat-label"),T(5,"username"),b(),v(6,"input",2),ti("ngModelChange",function(a){return Ei(o.new_user.username,a)||(o.new_user.username=a),a}),b()(),v(7,"mat-form-field")(8,"mat-label"),T(9,"password"),b(),v(10,"input",3),ti("ngModelChange",function(a){return Ei(o.new_user.password,a)||(o.new_user.password=a),a}),b()(),v(11,"mat-form-field")(12,"mat-label"),T(13,"confirm password"),b(),v(14,"input",4),ti("ngModelChange",function(a){return Ei(o.new_user.confirm_password,a)||(o.new_user.confirm_password=a),a}),b()(),v(15,"mat-form-field")(16,"mat-label"),T(17,"privilege"),b(),v(18,"mat-select",5),ti("ngModelChange",function(a){return Ei(o.new_user.privileges,a)||(o.new_user.privileges=a),a}),ns(19,IV,2,2,"mat-option",6,ts),b()(),v(21,"mat-form-field")(22,"mat-label"),T(23,"status"),b(),v(24,"mat-select",7),ti("ngModelChange",function(a){return Ei(o.new_user.status,a)||(o.new_user.status=a),a}),v(25,"mat-option",6),T(26,"\u6B63\u5E38"),b(),v(27,"mat-option",6),T(28,"\u51BB\u7ED3"),b()()()(),v(29,"mat-dialog-actions",8)(30,"button",9),T(31,"\u53D6\u6D88"),b(),v(32,"button",10),z("click",function(){return o.create()}),T(33,"\u65B0\u5EFA"),b()()),r&2&&(E(6),ei("ngModel",o.new_user.username),E(4),ei("ngModel",o.new_user.password),E(4),ei("ngModel",o.new_user.confirm_password),E(4),ei("ngModel",o.new_user.privileges),E(),is(o.user_srv.user().privileges),E(5),ei("ngModel",o.new_user.status),E(),U("value",0),E(2),U("value",1))},dependencies:[tt,Vi,zs,oi,Vs,ji,$t,Ls,_r,Fs,Sl,Hs,Of,$s,Us],styles:["[_nghost-%COMP%] mat-dialog-content.create-user-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:450px}@media screen and (max-width: 40rem){[_nghost-%COMP%] mat-dialog-content.create-user-content[_ngcontent-%COMP%]{width:100%}}"]});let t=e;return t})();var SE=(()=>{let e=class e{constructor(n){this.data=n}confirm(){this.data.confirmed=!0}};e.\u0275fac=function(r){return new(r||e)(h(Fl))},e.\u0275cmp=P({type:e,selectors:[["app-confirm"]],standalone:!0,features:[L],decls:7,vars:2,consts:[["mat-dialog-title",""],["align","end"],["mat-button","","mat-dialog-close",""],["mat-button","","color","primary","cdkFocusInitial","",3,"click","mat-dialog-close"]],template:function(r,o){r&1&&(v(0,"h2",0),T(1),b(),v(2,"mat-dialog-actions",1)(3,"button",2),T(4,"Cancel"),b(),v(5,"button",3),z("click",function(){return o.confirm()}),T(6,"\u786E\u8BA4"),b()()),r&2&&(E(),At(o.data.title),E(4),U("mat-dialog-close",!0))},dependencies:[tt,Hs,$s,$t,Us]});let t=e;return t})();function ME(t,e){return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((i,n)=>i===e[n])}function SV(t,e){if(t&1&&(v(0,"mat-option",5),T(1),b()),t&2){let i=e.$implicit;U("value",i.value),E(),At(i.label)}}var TE=(()=>{let e=class e{constructor(n,r,o,s){this.data=n,this.msg_srv=r,this.user_srv=o,this.dialogRef=s,this.user={},this.privileges=new mo([]),this.status=new mo,this.password=new mo(""),this.confirm_password=new mo(""),this.user=Z(w({},n),{password:"",confirm_password:""}),this.privileges.setValue(this.user.privileges.map(a=>a.value)),this.status.setValue(this.user.status.value)}update(){let n=!1,r={id:this.user.id};if((this.password.value||this.confirm_password.value)&&(n=!0,r.password=this.password.value,this.password.value!=this.confirm_password.value)){this.msg_srv.warning("\u4E24\u6B21\u5BC6\u7801\u4E0D\u76F8\u540C");return}if(this.status.value!=this.user.status.value&&(n=!0,r.status=this.status.value),ME(this.privileges.value,this.user.privileges.map(o=>o.value))||(r.privileges=this.privileges.value,n=!0),!n){this.msg_srv.warning("\u6CA1\u6709\u53D8\u66F4");return}this.user_srv.manage_user_update(r).subscribe(o=>{(o.status===200||o.status===401)&&this.dialogRef.close()})}initedPrivileges(n){return n.map(r=>r.value)}};e.\u0275fac=function(r){return new(r||e)(h(Fl),h(gr),h(_n),h(Bi))},e.\u0275cmp=P({type:e,selectors:[["app-update-user-dialog"]],standalone:!0,features:[L],decls:30,vars:6,consts:[["mat-dialog-title",""],[1,"update-user-content"],["matInput","","placeholder","password","type","password","name","password",3,"formControl"],["matInput","","placeholder","confirm password","type","password","name","confirm_password",3,"formControl"],["multiple","",3,"formControl"],[3,"value"],[3,"formControl"],["align","end"],["mat-raised-button","","mat-dialog-close",""],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(v(0,"h2",0),T(1,"\u4FEE\u6539\u7528\u6237"),b(),v(2,"mat-dialog-content",1)(3,"mat-form-field")(4,"mat-label"),T(5,"password"),b(),ie(6,"input",2),b(),v(7,"mat-form-field")(8,"mat-label"),T(9,"confirm password"),b(),ie(10,"input",3),b(),v(11,"mat-form-field")(12,"mat-label"),T(13,"privilege"),b(),v(14,"mat-select",4),ns(15,SV,2,2,"mat-option",5,ts),b()(),v(17,"mat-form-field")(18,"mat-label"),T(19,"status"),b(),v(20,"mat-select",6)(21,"mat-option",5),T(22,"\u6B63\u5E38"),b(),v(23,"mat-option",5),T(24,"\u51BB\u7ED3"),b()()()(),v(25,"mat-dialog-actions",7)(26,"button",8),T(27,"\u53D6\u6D88"),b(),v(28,"button",9),z("click",function(){return o.update()}),T(29,"\u4FEE\u6539"),b()()),r&2&&(E(6),U("formControl",o.password),E(4),U("formControl",o.confirm_password),E(4),U("formControl",o.privileges),E(),is(o.user_srv.user().privileges),E(5),U("formControl",o.status),E(),U("value",0),E(2),U("value",1))},dependencies:[tt,$t,$s,Us,Of,Hs,Vi,Vs,ji,oi,zs,HC,_r,Fs,Sv,Ls],styles:["[_nghost-%COMP%] mat-dialog-content.update-user-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:450px}@media screen and (max-width: 40rem){[_nghost-%COMP%] mat-dialog-content.update-user-content[_ngcontent-%COMP%]{width:100%}}"]});let t=e;return t})();var MV=["tooltip"],TV=20;var AV=new D("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.reposition({scrollThrottle:TV})}});function RV(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}var OV=new D("mat-tooltip-default-options",{providedIn:"root",factory:RV});var AE="tooltip-panel",RE=mn({passive:!0}),kV=8,NV=8,FV=24,PV=200,OE=(()=>{let e=class e{get position(){return this._position}set position(n){n!==this._position&&(this._position=n,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(n){this._positionAtOrigin=ri(n),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(n){this._disabled=ri(n),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(n){this._showDelay=Ni(n)}get hideDelay(){return this._hideDelay}set hideDelay(n){this._hideDelay=Ni(n),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(n){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=n!=null?String(n).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(n){this._tooltipClass=n,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(n,r,o,s,a,l,c,d,u,f,m,p){this._overlay=n,this._elementRef=r,this._scrollDispatcher=o,this._viewContainerRef=s,this._ngZone=a,this._platform=l,this._ariaDescriber=c,this._focusMonitor=d,this._dir=f,this._defaultOptions=m,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._tooltipComponent=LV,this._viewportMargin=8,this._cssClassPrefix="mat-mdc",this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new M,this._injector=y(me),this._scrollStrategy=u,this._document=p,m&&(this._showDelay=m.showDelay,this._hideDelay=m.hideDelay,m.position&&(this.position=m.position),m.positionAtOrigin&&(this.positionAtOrigin=m.positionAtOrigin),m.touchGestures&&(this.touchGestures=m.touchGestures)),f.change.pipe(fe(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)}),this._viewportMargin=kV}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(fe(this._destroyed)).subscribe(n=>{n?n==="keyboard"&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){let n=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([r,o])=>{n.removeEventListener(r,o,RE)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(n,this.message,"tooltip"),this._focusMonitor.stopMonitoring(n)}show(n=this.showDelay,r){if(this.disabled||!this.message||this._isTooltipVisible()){this._tooltipInstance?._cancelPendingAnimations();return}let o=this._createOverlay(r);this._detach(),this._portal=this._portal||new kn(this._tooltipComponent,this._viewContainerRef);let s=this._tooltipInstance=o.attach(this._portal).instance;s._triggerElement=this._elementRef.nativeElement,s._mouseLeaveHideDelay=this._hideDelay,s.afterHidden().pipe(fe(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),s.show(n)}hide(n=this.hideDelay){let r=this._tooltipInstance;r&&(r.isVisible()?r.hide(n):(r._cancelPendingAnimations(),this._detach()))}toggle(n){this._isTooltipVisible()?this.hide():this.show(void 0,n)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(n){if(this._overlayRef){let s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!n)&&s._origin instanceof O)return this._overlayRef;this._detach()}let r=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),o=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin?n||this._elementRef:this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(r);return o.positionChanges.pipe(fe(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:o,panelClass:`${this._cssClassPrefix}-${AE}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(fe(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(fe(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(fe(this._destroyed)).subscribe(s=>{this._isTooltipVisible()&&s.keyCode===27&&!Ct(s)&&(s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(n){let r=n.getConfig().positionStrategy,o=this._getOrigin(),s=this._getOverlayPosition();r.withPositions([this._addOffset(w(w({},o.main),s.main)),this._addOffset(w(w({},o.fallback),s.fallback))])}_addOffset(n){let r=NV,o=!this._dir||this._dir.value=="ltr";return n.originY==="top"?n.offsetY=-r:n.originY==="bottom"?n.offsetY=r:n.originX==="start"?n.offsetX=o?-r:r:n.originX==="end"&&(n.offsetX=o?r:-r),n}_getOrigin(){let n=!this._dir||this._dir.value=="ltr",r=this.position,o;r=="above"||r=="below"?o={originX:"center",originY:r=="above"?"top":"bottom"}:r=="before"||r=="left"&&n||r=="right"&&!n?o={originX:"start",originY:"center"}:(r=="after"||r=="right"&&n||r=="left"&&!n)&&(o={originX:"end",originY:"center"});let{x:s,y:a}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:s,originY:a}}}_getOverlayPosition(){let n=!this._dir||this._dir.value=="ltr",r=this.position,o;r=="above"?o={overlayX:"center",overlayY:"bottom"}:r=="below"?o={overlayX:"center",overlayY:"top"}:r=="before"||r=="left"&&n||r=="right"&&!n?o={overlayX:"end",overlayY:"center"}:(r=="after"||r=="right"&&n||r=="left"&&!n)&&(o={overlayX:"start",overlayY:"center"});let{x:s,y:a}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:s,overlayY:a}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),cn(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(n){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=n,this._tooltipInstance._markForCheck())}_invertPosition(n,r){return this.position==="above"||this.position==="below"?r==="top"?r="bottom":r==="bottom"&&(r="top"):n==="end"?n="start":n==="start"&&(n="end"),{x:n,y:r}}_updateCurrentPositionClass(n){let{overlayY:r,originX:o,originY:s}=n,a;if(r==="center"?this._dir&&this._dir.value==="rtl"?a=o==="end"?"left":"right":a=o==="start"?"left":"right":a=r==="bottom"&&s==="top"?"above":"below",a!==this._currentPosition){let l=this._overlayRef;if(l){let c=`${this._cssClassPrefix}-${AE}-`;l.removePanelClass(c+this._currentPosition),l.addPanelClass(c+a)}this._currentPosition=a}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",n=>{this._setupPointerExitEventsIfNeeded();let r;n.x!==void 0&&n.y!==void 0&&(r=n),this.show(void 0,r)}]):this.touchGestures!=="off"&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",n=>{let r=n.targetTouches?.[0],o=r?{x:r.clientX,y:r.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout);let s=500;this._touchstartTimeout=setTimeout(()=>this.show(void 0,o),this._defaultOptions.touchLongPressShowDelay??s)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;let n=[];if(this._platformSupportsMouseEvents())n.push(["mouseleave",r=>{let o=r.relatedTarget;(!o||!this._overlayRef?.overlayElement.contains(o))&&this.hide()}],["wheel",r=>this._wheelListener(r)]);else if(this.touchGestures!=="off"){this._disableNativeGesturesIfNecessary();let r=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};n.push(["touchend",r],["touchcancel",r])}this._addListeners(n),this._passiveListeners.push(...n)}_addListeners(n){n.forEach(([r,o])=>{this._elementRef.nativeElement.addEventListener(r,o,RE)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(n){if(this._isTooltipVisible()){let r=this._document.elementFromPoint(n.clientX,n.clientY),o=this._elementRef.nativeElement;r!==o&&!o.contains(r)&&this.hide()}}_disableNativeGesturesIfNecessary(){let n=this.touchGestures;if(n!=="off"){let r=this._elementRef.nativeElement,o=r.style;(n==="on"||r.nodeName!=="INPUT"&&r.nodeName!=="TEXTAREA")&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),(n==="on"||!r.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}};e.\u0275fac=function(r){return new(r||e)(h(nt),h(O),h(Ms),h(Je),h(A),h(ye),h(ND),h(On),h(AV),h(bt),h(OV,8),h(j))},e.\u0275dir=R({type:e,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(r,o){r&2&&xe("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"],standalone:!0});let t=e;return t})(),LV=(()=>{let e=class e{constructor(n,r,o){this._changeDetectorRef=n,this._elementRef=r,this._isMultiline=!1,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new M,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide",this._animationsDisabled=o==="NoopAnimations"}show(n){this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},n)}hide(n){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},n)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:n}){(!n||!this._triggerElement.contains(n))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){let n=this._elementRef.nativeElement.getBoundingClientRect();return n.height>FV&&n.width>=PV}_handleAnimationEnd({animationName:n}){(n===this._showAnimation||n===this._hideAnimation)&&this._finalizeAnimation(n===this._showAnimation)}_cancelPendingAnimations(){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(n){n?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(n){let r=this._tooltip.nativeElement,o=this._showAnimation,s=this._hideAnimation;if(r.classList.remove(n?s:o),r.classList.add(n?o:s),this._isVisible!==n&&(this._isVisible=n,this._changeDetectorRef.markForCheck()),n&&!this._animationsDisabled&&typeof getComputedStyle=="function"){let a=getComputedStyle(r);(a.getPropertyValue("animation-duration")==="0s"||a.getPropertyValue("animation-name")==="none")&&(this._animationsDisabled=!0)}n&&this._onShow(),this._animationsDisabled&&(r.classList.add("_mat-animation-noopable"),this._finalizeAnimation(n))}};e.\u0275fac=function(r){return new(r||e)(h(Fe),h(O),h(ft,8))},e.\u0275cmp=P({type:e,selectors:[["mat-tooltip-component"]],viewQuery:function(r,o){if(r&1&&Ye(MV,7),r&2){let s;Q(s=K())&&(o._tooltip=s.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(r,o){r&1&&z("mouseleave",function(a){return o._handleMouseLeave(a)}),r&2&&Zr("zoom",o.isVisible()?1:null)},standalone:!0,features:[L],decls:4,vars:4,consts:[["tooltip",""],[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"animationend","ngClass"],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(r,o){if(r&1){let s=lt();v(0,"div",1,0),z("animationend",function(l){return Te(s),Ae(o._handleAnimationEnd(l))}),v(2,"div",2),T(3),b()()}r&2&&(xe("mdc-tooltip--multiline",o._isMultiline),U("ngClass",o.tooltipClass),E(3),At(o.message))},dependencies:[Jd],styles:['.mdc-tooltip__surface{word-break:break-all;word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip--showing-transition .mdc-tooltip__surface-animation{transition:opacity 150ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-tooltip--hide-transition .mdc-tooltip__surface-animation{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - 2*8px);margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - 2*8px);align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mat-mdc-tooltip .mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color)}.mat-mdc-tooltip .mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__caret-surface-top,.mat-mdc-tooltip .mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color)}.mat-mdc-tooltip .mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font);line-height:var(--mdc-plain-tooltip-supporting-text-line-height);font-size:var(--mdc-plain-tooltip-supporting-text-size);font-weight:var(--mdc-plain-tooltip-supporting-text-weight);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0});let t=e;return t})();function jV(t,e){if(t&1&&(v(0,"mat-option",16),T(1),b()),t&2){let i=e.$implicit;U("value",i),E(),Le(" ",i," ")}}function VV(t,e){if(t&1){let i=lt();v(0,"mat-form-field",13)(1,"mat-select",15),z("selectionChange",function(r){Te(i);let o=$(2);return Ae(o._changePageSize(r.value))}),ns(2,jV,2,2,"mat-option",16,ts),b()()}if(t&2){let i=$(2);U("appearance",i._formFieldAppearance)("color",i.color),E(),U("value",i.pageSize)("disabled",i.disabled)("aria-labelledby",i._pageSizeLabelId)("panelClass",i.selectConfig.panelClass||"")("disableOptionCentering",i.selectConfig.disableOptionCentering),E(),is(i._displayedPageSizeOptions)}}function BV(t,e){if(t&1&&(v(0,"div",14),T(1),b()),t&2){let i=$(2);E(),At(i.pageSize)}}function zV(t,e){if(t&1&&(v(0,"div",2)(1,"div",12),T(2),b(),B(3,VV,4,7,"mat-form-field",13)(4,BV,2,1,"div",14),b()),t&2){let i=$();E(),De("id",i._pageSizeLabelId),E(),Le(" ",i._intl.itemsPerPageLabel," "),E(),be(i._displayedPageSizeOptions.length>1?3:-1),E(),be(i._displayedPageSizeOptions.length<=1?4:-1)}}function UV(t,e){if(t&1){let i=lt();v(0,"button",17),z("click",function(){Te(i);let r=$();return Ae(r.firstPage())}),wi(),v(1,"svg",7),ie(2,"path",18),b()()}if(t&2){let i=$();U("matTooltip",i._intl.firstPageLabel)("matTooltipDisabled",i._previousButtonsDisabled())("matTooltipPosition","above")("disabled",i._previousButtonsDisabled()),De("aria-label",i._intl.firstPageLabel)}}function HV(t,e){if(t&1){let i=lt();v(0,"button",19),z("click",function(){Te(i);let r=$();return Ae(r.lastPage())}),wi(),v(1,"svg",7),ie(2,"path",20),b()()}if(t&2){let i=$();U("matTooltip",i._intl.lastPageLabel)("matTooltipDisabled",i._nextButtonsDisabled())("matTooltipPosition","above")("disabled",i._nextButtonsDisabled()),De("aria-label",i._intl.lastPageLabel)}}var $V=(()=>{let e=class e{constructor(){this.changes=new M,this.itemsPerPageLabel="Items per page:",this.nextPageLabel="Next page",this.previousPageLabel="Previous page",this.firstPageLabel="First page",this.lastPageLabel="Last page",this.getRangeLabel=(n,r,o)=>{if(o==0||r==0)return`0 of ${o}`;o=Math.max(o,0);let s=n*r,a=s{let e=class e{get pageIndex(){return this._pageIndex}set pageIndex(n){this._pageIndex=Math.max(n||0,0),this._changeDetectorRef.markForCheck()}get length(){return this._length}set length(n){this._length=n||0,this._changeDetectorRef.markForCheck()}get pageSize(){return this._pageSize}set pageSize(n){this._pageSize=Math.max(n||0,0),this._updateDisplayedPageSizeOptions()}get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(n){this._pageSizeOptions=(n||[]).map(r=>ni(r,0)),this._updateDisplayedPageSizeOptions()}constructor(n,r,o){if(this._intl=n,this._changeDetectorRef=r,this._pageSizeLabelId=`mat-paginator-page-size-label-${qV++}`,this._isInitialized=!1,this._initializedStream=new Ir(1),this._pageIndex=0,this._length=0,this._pageSizeOptions=[],this.hidePageSize=!1,this.showFirstLastButtons=!1,this.selectConfig={},this.disabled=!1,this.page=new G,this.initialized=this._initializedStream,this._intlChanges=n.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),o){let{pageSize:s,pageSizeOptions:a,hidePageSize:l,showFirstLastButtons:c}=o;s!=null&&(this._pageSize=s),a!=null&&(this._pageSizeOptions=a),l!=null&&(this.hidePageSize=l),c!=null&&(this.showFirstLastButtons=c)}this._formFieldAppearance=o?.formFieldAppearance||"outline"}ngOnInit(){this._isInitialized=!0,this._updateDisplayedPageSizeOptions(),this._initializedStream.next()}ngOnDestroy(){this._initializedStream.complete(),this._intlChanges.unsubscribe()}nextPage(){if(!this.hasNextPage())return;let n=this.pageIndex;this.pageIndex=this.pageIndex+1,this._emitPageEvent(n)}previousPage(){if(!this.hasPreviousPage())return;let n=this.pageIndex;this.pageIndex=this.pageIndex-1,this._emitPageEvent(n)}firstPage(){if(!this.hasPreviousPage())return;let n=this.pageIndex;this.pageIndex=0,this._emitPageEvent(n)}lastPage(){if(!this.hasNextPage())return;let n=this.pageIndex;this.pageIndex=this.getNumberOfPages()-1,this._emitPageEvent(n)}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let n=this.getNumberOfPages()-1;return this.pageIndexn-r),this._changeDetectorRef.markForCheck())}_emitPageEvent(n){this.page.emit({previousPageIndex:n,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}};e.\u0275fac=function(r){return new(r||e)(h($V),h(Fe),h(GV,8))},e.\u0275cmp=P({type:e,selectors:[["mat-paginator"]],hostAttrs:["role","group",1,"mat-mdc-paginator"],inputs:{color:"color",pageIndex:[2,"pageIndex","pageIndex",ni],length:[2,"length","length",ni],pageSize:[2,"pageSize","pageSize",ni],pageSizeOptions:"pageSizeOptions",hidePageSize:[2,"hidePageSize","hidePageSize",te],showFirstLastButtons:[2,"showFirstLastButtons","showFirstLastButtons",te],selectConfig:"selectConfig",disabled:[2,"disabled","disabled",te]},outputs:{page:"page"},exportAs:["matPaginator"],standalone:!0,features:[Ve,L],decls:14,vars:14,consts:[[1,"mat-mdc-paginator-outer-container"],[1,"mat-mdc-paginator-container"],[1,"mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-range-actions"],["aria-live","polite",1,"mat-mdc-paginator-range-label"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-previous",3,"click","matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["viewBox","0 0 24 24","focusable","false","aria-hidden","true",1,"mat-mdc-paginator-icon"],["d","M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-next",3,"click","matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["d","M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],[1,"mat-mdc-paginator-page-size-label"],[1,"mat-mdc-paginator-page-size-select",3,"appearance","color"],[1,"mat-mdc-paginator-page-size-value"],["hideSingleSelectionIndicator","",3,"selectionChange","value","disabled","aria-labelledby","panelClass","disableOptionCentering"],[3,"value"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-first",3,"click","matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["d","M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-last",3,"click","matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["d","M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div",1),B(2,zV,5,4,"div",2),v(3,"div",3)(4,"div",4),T(5),b(),B(6,UV,3,5,"button",5),v(7,"button",6),z("click",function(){return o.previousPage()}),wi(),v(8,"svg",7),ie(9,"path",8),b()(),c0(),v(10,"button",9),z("click",function(){return o.nextPage()}),wi(),v(11,"svg",7),ie(12,"path",10),b()(),B(13,HV,3,5,"button",11),b()()()),r&2&&(E(2),be(o.hidePageSize?-1:2),E(3),Le(" ",o._intl.getRangeLabel(o.pageIndex,o.pageSize,o.length)," "),E(),be(o.showFirstLastButtons?6:-1),E(),U("matTooltip",o._intl.previousPageLabel)("matTooltipDisabled",o._previousButtonsDisabled())("matTooltipPosition","above")("disabled",o._previousButtonsDisabled()),De("aria-label",o._intl.previousPageLabel),E(3),U("matTooltip",o._intl.nextPageLabel)("matTooltipDisabled",o._nextButtonsDisabled())("matTooltipPosition","above")("disabled",o._nextButtonsDisabled()),De("aria-label",o._intl.nextPageLabel),E(3),be(o.showFirstLastButtons?13:-1))},dependencies:[Vi,zs,oi,zu,OE],styles:[".mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color);background-color:var(--mat-paginator-container-background-color);font-family:var(--mat-paginator-container-text-font);line-height:var(--mat-paginator-container-text-line-height);font-size:var(--mat-paginator-container-text-size);font-weight:var(--mat-paginator-container-text-weight);letter-spacing:var(--mat-paginator-container-text-tracking);--mat-form-field-container-height:var(--mat-paginator-form-field-container-height);--mat-form-field-container-vertical-padding:var(--mat-paginator-form-field-container-vertical-padding)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size)}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:84px}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color)}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon,.cdk-high-contrast-active .mat-mdc-paginator-icon{fill:currentColor;fill:CanvasText}.cdk-high-contrast-active .mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0});let t=e;return t})();var YV=()=>[5,10,25,100];function ZV(t,e){t&1&&(v(0,"th",16),T(1,"username"),b())}function QV(t,e){if(t&1&&(v(0,"td",17),T(1),b()),t&2){let i=e.$implicit;E(),Le(" ",i.username,"")}}function KV(t,e){t&1&&(v(0,"th",16),T(1,"status"),b())}function XV(t,e){if(t&1&&(v(0,"td",17),T(1),b()),t&2){let i=e.$implicit;E(),Le(" ",i.status.label,"")}}function JV(t,e){t&1&&(v(0,"th",16),T(1,"role"),b())}function e2(t,e){if(t&1&&(v(0,"td",17),T(1),b()),t&2){let i=e.$implicit;E(),Le(" ",i.role.label,"")}}function t2(t,e){t&1&&(v(0,"th",16),T(1,"privileges"),b())}function n2(t,e){if(t&1&&(v(0,"td",17),T(1),b()),t&2){let i=e.$implicit,n=$();E(),Le(" ",n._parsePrivileges(i.privileges),"")}}function i2(t,e){t&1&&(v(0,"th",16),T(1,"operation"),b())}function r2(t,e){if(t&1){let i=lt();v(0,"td",18)(1,"button",19),z("click",function(){let r=Te(i).$implicit,o=$();return Ae(o.update_user(r))}),v(2,"mat-icon",20),T(3,"tune"),b()(),v(4,"button",21),z("click",function(){let r=Te(i).$implicit,o=$();return Ae(o.delete_user(r))}),v(5,"mat-icon",22),T(6,"delete"),b()()()}}function o2(t,e){t&1&&ie(0,"tr",23)}function s2(t,e){t&1&&ie(0,"tr",24)}var NE=(()=>{let e=class e{constructor(n,r){this.user_srv=n,this.dialog=r,this.displayedColumns=["username","status","role","privileges","operation"]}ngOnInit(){this.user_srv.manage_user_list()}open_dialog(){this.dialog.open(IE,{data:{}})}_parsePrivileges(n){try{return n.map(o=>o.label).join("; ")}catch(r){return console.log("[D] parse privileges err=",r),""}}delete_user(n){let r={title:`\u786E\u8BA4\u5220\u9664\u7528\u6237 ${n.username} \u5417?`,confirmed:!1};this.dialog.open(SE,{data:r}).afterClosed().subscribe(()=>{r.confirmed&&this.user_srv.manage_user_delete(n)})}update_user(n){this.dialog.open(TE,{data:n})}handlePager(n){console.log("[D] handle pager change event=",n),this.user_srv.user_list.set(Z(w({},this.user_srv.user_list()),{size:n.pageSize,page:n.pageIndex})),this.user_srv.manage_user_list()}};e.\u0275fac=function(r){return new(r||e)(h(_n),h(Rf))},e.\u0275cmp=P({type:e,selectors:[["app-user"]],standalone:!0,features:[L],decls:26,vars:7,consts:[[1,"toolbar"],["mat-raised-button","","color","primary",3,"click"],[1,"table"],["mat-table","",1,"mat-elevation-z8",3,"dataSource"],["matColumnDef","username"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","status"],["matColumnDef","role"],["matColumnDef","privileges"],["matColumnDef","operation"],["mat-cell","","style","padding-left: 4px !important;",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"pager"],["aria-label","Select page",3,"page","length","pageSize","pageSizeOptions"],["mat-header-cell",""],["mat-cell",""],["mat-cell","",2,"padding-left","4px !important"],["mat-icon-button","",3,"click"],["color","primary"],["mat-icon-button","","color","warn",3,"click"],["color","secondary"],["mat-header-row",""],["mat-row",""]],template:function(r,o){r&1&&(v(0,"div",0)(1,"div"),T(2," \u7528\u6237\u7BA1\u7406 "),b(),v(3,"button",1),z("click",function(){return o.open_dialog()}),T(4,"\u65B0\u5EFA\u7528\u6237"),b()(),v(5,"div",2)(6,"table",3),Nt(7,4),B(8,ZV,2,0,"th",5)(9,QV,2,1,"td",6),Ft(),Nt(10,7),B(11,KV,2,0,"th",5)(12,XV,2,1,"td",6),Ft(),Nt(13,8),B(14,JV,2,0,"th",5)(15,e2,2,1,"td",6),Ft(),Nt(16,9),B(17,t2,2,0,"th",5)(18,n2,2,1,"td",6),Ft(),Nt(19,10),B(20,i2,2,0,"th",5)(21,r2,7,0,"td",11),Ft(),B(22,o2,1,0,"tr",12)(23,s2,1,0,"tr",13),b()(),v(24,"div",14)(25,"mat-paginator",15),z("page",function(a){return o.handlePager(a)}),b()()),r&2&&(E(6),U("dataSource",o.user_srv.user_list().list),E(16),U("matHeaderRowDef",o.displayedColumns),E(),U("matRowDefColumns",o.displayedColumns),E(2),U("length",o.user_srv.user_list().total)("pageSize",o.user_srv.user_list().size)("pageSizeOptions",qw(6,YV)))},dependencies:[tt,$t,yf,Df,Cf,Ef,wf,xf,Mf,Tf,Sf,If,zu,uo,kE],styles:["[_nghost-%COMP%]{width:100%;max-width:100%;display:flex;flex-direction:column}[_nghost-%COMP%] > div[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%]{display:flex;width:100%;max-width:100%;align-items:center;flex-direction:row;margin-top:1rem}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin-left:1rem}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto;margin-right:1rem}[_nghost-%COMP%] div.table[_ngcontent-%COMP%]{flex:1 0 0;margin-top:1rem}[_nghost-%COMP%] div.pager[_ngcontent-%COMP%]{margin-top:auto}"]});let t=e;return t})();var FE=[{path:"",component:pC},{path:"login",component:iE},{path:"log",component:gE},{path:"user",component:NE}];var PE=(()=>{let e=class e{constructor(n,r){this.msg_srv=n,this.router=r}intercept(n,r){return n=n.clone({headers:n.headers.append("Authorization",localStorage.getItem("ult-token")??"")}),r.handle(n).pipe(N(o=>{if(o instanceof Jr)try{let s=o.body;console.log(`[D] ${n.method} - ${n.url} =>`,s),s.status>200&&this.msg_srv.error(s.msg),s.status===401&&this.router.navigate(["login"])}catch(s){console.warn("[E] http err=",s),this.msg_srv.error("\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u5668")}return o}))}};e.\u0275fac=function(r){return new(r||e)(g(gr),g(ur))},e.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function LE(t){return new S(3e3,!1)}function a2(){return new S(3100,!1)}function l2(){return new S(3101,!1)}function c2(t){return new S(3001,!1)}function d2(t){return new S(3003,!1)}function u2(t){return new S(3004,!1)}function f2(t,e){return new S(3005,!1)}function h2(){return new S(3006,!1)}function m2(){return new S(3007,!1)}function p2(t,e){return new S(3008,!1)}function g2(t){return new S(3002,!1)}function v2(t,e,i,n,r){return new S(3010,!1)}function b2(){return new S(3011,!1)}function _2(){return new S(3012,!1)}function y2(){return new S(3200,!1)}function w2(){return new S(3202,!1)}function x2(){return new S(3013,!1)}function D2(t){return new S(3014,!1)}function C2(t){return new S(3015,!1)}function E2(t){return new S(3016,!1)}function I2(t,e){return new S(3404,!1)}function S2(t){return new S(3502,!1)}function M2(t){return new S(3503,!1)}function T2(){return new S(3300,!1)}function A2(t){return new S(3504,!1)}function R2(t){return new S(3301,!1)}function O2(t,e){return new S(3302,!1)}function k2(t){return new S(3303,!1)}function N2(t,e){return new S(3400,!1)}function F2(t){return new S(3401,!1)}function P2(t){return new S(3402,!1)}function L2(t,e){return new S(3505,!1)}function yr(t){switch(t.length){case 0:return new fr;case 1:return t[0];default:return new ul(t)}}function KE(t,e,i=new Map,n=new Map){let r=[],o=[],s=-1,a=null;if(e.forEach(l=>{let c=l.get("offset"),d=c==s,u=d&&a||new Map;l.forEach((f,m)=>{let p=m,_=f;if(m!=="offset")switch(p=t.normalizePropertyName(p,r),_){case Uu:_=i.get(m);break;case si:_=n.get(m);break;default:_=t.normalizeStyleValue(m,p,_,r);break}u.set(p,_)}),d||o.push(u),a=u,s=c}),r.length)throw S2(r);return o}function pb(t,e,i,n){switch(e){case"start":t.onStart(()=>n(i&&qv(i,"start",t)));break;case"done":t.onDone(()=>n(i&&qv(i,"done",t)));break;case"destroy":t.onDestroy(()=>n(i&&qv(i,"destroy",t)));break}}function qv(t,e,i){let n=i.totalTime,r=!!i.disabled,o=gb(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,n??t.totalTime,r),s=t._data;return s!=null&&(o._data=s),o}function gb(t,e,i,n,r="",o=0,s){return{element:t,triggerName:e,fromState:i,toState:n,phaseName:r,totalTime:o,disabled:!!s}}function rn(t,e,i){let n=t.get(e);return n||t.set(e,n=i),n}function jE(t){let e=t.indexOf(":"),i=t.substring(1,e),n=t.slice(e+1);return[i,n]}var j2=typeof document>"u"?null:document.documentElement;function vb(t){let e=t.parentNode||t.host||null;return e===j2?null:e}function V2(t){return t.substring(1,6)=="ebkit"}var bo=null,VE=!1;function B2(t){bo||(bo=z2()||{},VE=bo.style?"WebkitAppearance"in bo.style:!1);let e=!0;return bo.style&&!V2(t)&&(e=t in bo.style,!e&&VE&&(e="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in bo.style)),e}function z2(){return typeof document<"u"?document.body:null}function XE(t,e){for(;e;){if(e===t)return!0;e=vb(e)}return!1}function JE(t,e,i){if(i)return Array.from(t.querySelectorAll(e));let n=t.querySelector(e);return n?[n]:[]}var bb=(()=>{let e=class e{validateStyleProperty(n){return B2(n)}containsElement(n,r){return XE(n,r)}getParentElement(n){return vb(n)}query(n,r,o){return JE(n,r,o)}computeStyle(n,r,o){return o||""}animate(n,r,o,s,a,l=[],c){return new fr(o,s)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),xb=class xb{};xb.NOOP=new bb;var wo=xb,xo=class{};var U2=1e3,eI="{{",H2="}}",tI="ng-enter",Jv="ng-leave",kf="ng-trigger",jf=".ng-trigger",BE="ng-animating",eb=".ng-animating";function zi(t){if(typeof t=="number")return t;let e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:tb(parseFloat(e[1]),e[2])}function tb(t,e){switch(e){case"s":return t*U2;default:return t}}function Vf(t,e,i){return t.hasOwnProperty("duration")?t:$2(t,e,i)}function $2(t,e,i){let n=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i,r,o=0,s="";if(typeof t=="string"){let a=t.match(n);if(a===null)return e.push(LE(t)),{duration:0,delay:0,easing:""};r=tb(parseFloat(a[1]),a[2]);let l=a[3];l!=null&&(o=tb(parseFloat(l),a[4]));let c=a[5];c&&(s=c)}else r=t;if(!i){let a=!1,l=e.length;r<0&&(e.push(a2()),a=!0),o<0&&(e.push(l2()),a=!0),a&&e.splice(l,0,LE(t))}return{duration:r,delay:o,easing:s}}function W2(t){return t.length?t[0]instanceof Map?t:t.map(e=>new Map(Object.entries(e))):[]}function di(t,e,i){e.forEach((n,r)=>{let o=_b(r);i&&!i.has(r)&&i.set(r,t.style[o]),t.style[o]=n})}function yo(t,e){e.forEach((i,n)=>{let r=_b(n);t.style[r]=""})}function Pl(t){return Array.isArray(t)?t.length==1?t[0]:XD(t):t}function G2(t,e,i){let n=e.params||{},r=nI(t);r.length&&r.forEach(o=>{n.hasOwnProperty(o)||i.push(c2(o))})}var nb=new RegExp(`${eI}\\s*(.+?)\\s*${H2}`,"g");function nI(t){let e=[];if(typeof t=="string"){let i;for(;i=nb.exec(t);)e.push(i[1]);nb.lastIndex=0}return e}function jl(t,e,i){let n=`${t}`,r=n.replace(nb,(o,s)=>{let a=e[s];return a==null&&(i.push(d2(s)),a=""),a.toString()});return r==n?t:r}var q2=/-+([a-z0-9])/g;function _b(t){return t.replace(q2,(...e)=>e[1].toUpperCase())}function Y2(t,e){return t===0||e===0}function Z2(t,e,i){if(i.size&&e.length){let n=e[0],r=[];if(i.forEach((o,s)=>{n.has(s)||r.push(s),n.set(s,o)}),r.length)for(let o=1;os.set(a,yb(t,a)))}}return e}function nn(t,e,i){switch(e.type){case ae.Trigger:return t.visitTrigger(e,i);case ae.State:return t.visitState(e,i);case ae.Transition:return t.visitTransition(e,i);case ae.Sequence:return t.visitSequence(e,i);case ae.Group:return t.visitGroup(e,i);case ae.Animate:return t.visitAnimate(e,i);case ae.Keyframes:return t.visitKeyframes(e,i);case ae.Style:return t.visitStyle(e,i);case ae.Reference:return t.visitReference(e,i);case ae.AnimateChild:return t.visitAnimateChild(e,i);case ae.AnimateRef:return t.visitAnimateRef(e,i);case ae.Query:return t.visitQuery(e,i);case ae.Stagger:return t.visitStagger(e,i);default:throw u2(e.type)}}function yb(t,e){return window.getComputedStyle(t)[e]}var Q2=new Set(["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"]),Bf=class extends xo{normalizePropertyName(e,i){return _b(e)}normalizeStyleValue(e,i,n,r){let o="",s=n.toString().trim();if(Q2.has(i)&&n!==0&&n!=="0")if(typeof n=="number")o="px";else{let a=n.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&a[1].length==0&&r.push(f2(e,n))}return s+o}};var zf="*";function K2(t,e){let i=[];return typeof t=="string"?t.split(/\s*,\s*/).forEach(n=>X2(n,i,e)):i.push(t),i}function X2(t,e,i){if(t[0]==":"){let l=J2(t,i);if(typeof l=="function"){e.push(l);return}t=l}let n=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(n==null||n.length<4)return i.push(C2(t)),e;let r=n[1],o=n[2],s=n[3];e.push(zE(r,s));let a=r==zf&&s==zf;o[0]=="<"&&!a&&e.push(zE(s,r))}function J2(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(i,n)=>parseFloat(n)>parseFloat(i);case":decrement":return(i,n)=>parseFloat(n) *"}}var Nf=new Set(["true","1"]),Ff=new Set(["false","0"]);function zE(t,e){let i=Nf.has(t)||Ff.has(t),n=Nf.has(e)||Ff.has(e);return(r,o)=>{let s=t==zf||t==r,a=e==zf||e==o;return!s&&i&&typeof r=="boolean"&&(s=r?Nf.has(t):Ff.has(t)),!a&&n&&typeof o=="boolean"&&(a=o?Nf.has(e):Ff.has(e)),s&&a}}var iI=":self",eB=new RegExp(`s*${iI}s*,?`,"g");function rI(t,e,i,n){return new ib(t).build(e,i,n)}var UE="",ib=class{constructor(e){this._driver=e}build(e,i,n){let r=new rb(i);return this._resetContextStyleTimingState(r),nn(this,Pl(e),r)}_resetContextStyleTimingState(e){e.currentQuerySelector=UE,e.collectedStyles=new Map,e.collectedStyles.set(UE,new Map),e.currentTime=0}visitTrigger(e,i){let n=i.queryCount=0,r=i.depCount=0,o=[],s=[];return e.name.charAt(0)=="@"&&i.errors.push(h2()),e.definitions.forEach(a=>{if(this._resetContextStyleTimingState(i),a.type==ae.State){let l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(d=>{l.name=d,o.push(this.visitState(l,i))}),l.name=c}else if(a.type==ae.Transition){let l=this.visitTransition(a,i);n+=l.queryCount,r+=l.depCount,s.push(l)}else i.errors.push(m2())}),{type:ae.Trigger,name:e.name,states:o,transitions:s,queryCount:n,depCount:r,options:null}}visitState(e,i){let n=this.visitStyle(e.styles,i),r=e.options&&e.options.params||null;if(n.containsDynamicStyles){let o=new Set,s=r||{};n.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{nI(l).forEach(c=>{s.hasOwnProperty(c)||o.add(c)})})}),o.size&&i.errors.push(p2(e.name,[...o.values()]))}return{type:ae.State,name:e.name,style:n,options:r?{params:r}:null}}visitTransition(e,i){i.queryCount=0,i.depCount=0;let n=nn(this,Pl(e.animation),i),r=K2(e.expr,i.errors);return{type:ae.Transition,matchers:r,animation:n,queryCount:i.queryCount,depCount:i.depCount,options:_o(e.options)}}visitSequence(e,i){return{type:ae.Sequence,steps:e.steps.map(n=>nn(this,n,i)),options:_o(e.options)}}visitGroup(e,i){let n=i.currentTime,r=0,o=e.steps.map(s=>{i.currentTime=n;let a=nn(this,s,i);return r=Math.max(r,i.currentTime),a});return i.currentTime=r,{type:ae.Group,steps:o,options:_o(e.options)}}visitAnimate(e,i){let n=rB(e.timings,i.errors);i.currentAnimateTimings=n;let r,o=e.styles?e.styles:dt({});if(o.type==ae.Keyframes)r=this.visitKeyframes(o,i);else{let s=e.styles,a=!1;if(!s){a=!0;let c={};n.easing&&(c.easing=n.easing),s=dt(c)}i.currentTime+=n.duration+n.delay;let l=this.visitStyle(s,i);l.isEmptyStep=a,r=l}return i.currentAnimateTimings=null,{type:ae.Animate,timings:n,style:r,options:null}}visitStyle(e,i){let n=this._makeStyleAst(e,i);return this._validateStyleAst(n,i),n}_makeStyleAst(e,i){let n=[],r=Array.isArray(e.styles)?e.styles:[e.styles];for(let a of r)typeof a=="string"?a===si?n.push(a):i.errors.push(g2(a)):n.push(new Map(Object.entries(a)));let o=!1,s=null;return n.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o)){for(let l of a.values())if(l.toString().indexOf(eI)>=0){o=!0;break}}}),{type:ae.Style,styles:n,easing:s,offset:e.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(e,i){let n=i.currentAnimateTimings,r=i.currentTime,o=i.currentTime;n&&o>0&&(o-=n.duration+n.delay),e.styles.forEach(s=>{typeof s!="string"&&s.forEach((a,l)=>{let c=i.collectedStyles.get(i.currentQuerySelector),d=c.get(l),u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(i.errors.push(v2(l,d.startTime,d.endTime,o,r)),u=!1),o=d.startTime),u&&c.set(l,{startTime:o,endTime:r}),i.options&&G2(a,i.options,i.errors)})})}visitKeyframes(e,i){let n={type:ae.Keyframes,styles:[],options:null};if(!i.currentAnimateTimings)return i.errors.push(b2()),n;let r=1,o=0,s=[],a=!1,l=!1,c=0,d=e.steps.map(I=>{let V=this._makeStyleAst(I,i),le=V.offset!=null?V.offset:iB(V.styles),ne=0;return le!=null&&(o++,ne=V.offset=le),l=l||ne<0||ne>1,a=a||ne0&&o{let le=f>0?V==m?1:f*V:s[V],ne=le*x;i.currentTime=p+_.delay+ne,_.duration=ne,this._validateStyleAst(I,i),I.offset=le,n.styles.push(I)}),n}visitReference(e,i){return{type:ae.Reference,animation:nn(this,Pl(e.animation),i),options:_o(e.options)}}visitAnimateChild(e,i){return i.depCount++,{type:ae.AnimateChild,options:_o(e.options)}}visitAnimateRef(e,i){return{type:ae.AnimateRef,animation:this.visitReference(e.animation,i),options:_o(e.options)}}visitQuery(e,i){let n=i.currentQuerySelector,r=e.options||{};i.queryCount++,i.currentQuery=e;let[o,s]=tB(e.selector);i.currentQuerySelector=n.length?n+" "+o:o,rn(i.collectedStyles,i.currentQuerySelector,new Map);let a=nn(this,Pl(e.animation),i);return i.currentQuery=null,i.currentQuerySelector=n,{type:ae.Query,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:e.selector,options:_o(e.options)}}visitStagger(e,i){i.currentQuery||i.errors.push(x2());let n=e.timings==="full"?{duration:0,delay:0,easing:"full"}:Vf(e.timings,i.errors,!0);return{type:ae.Stagger,animation:nn(this,Pl(e.animation),i),timings:n,options:null}}};function tB(t){let e=!!t.split(/\s*,\s*/).find(i=>i==iI);return e&&(t=t.replace(eB,"")),t=t.replace(/@\*/g,jf).replace(/@\w+/g,i=>jf+"-"+i.slice(1)).replace(/:animating/g,eb),[t,e]}function nB(t){return t?w({},t):null}var rb=class{constructor(e){this.errors=e,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}};function iB(t){if(typeof t=="string")return null;let e=null;if(Array.isArray(t))t.forEach(i=>{if(i instanceof Map&&i.has("offset")){let n=i;e=parseFloat(n.get("offset")),n.delete("offset")}});else if(t instanceof Map&&t.has("offset")){let i=t;e=parseFloat(i.get("offset")),i.delete("offset")}return e}function rB(t,e){if(t.hasOwnProperty("duration"))return t;if(typeof t=="number"){let o=Vf(t,e).duration;return Yv(o,0,"")}let i=t;if(i.split(/\s+/).some(o=>o.charAt(0)=="{"&&o.charAt(1)=="{")){let o=Yv(0,0,"");return o.dynamic=!0,o.strValue=i,o}let r=Vf(i,e);return Yv(r.duration,r.delay,r.easing)}function _o(t){return t?(t=w({},t),t.params&&(t.params=nB(t.params))):t={},t}function Yv(t,e,i){return{duration:t,delay:e,easing:i}}function wb(t,e,i,n,r,o,s=null,a=!1){return{type:1,element:t,keyframes:e,preStyleProps:i,postStyleProps:n,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}var Vl=class{constructor(){this._map=new Map}get(e){return this._map.get(e)||[]}append(e,i){let n=this._map.get(e);n||this._map.set(e,n=[]),n.push(...i)}has(e){return this._map.has(e)}clear(){this._map.clear()}},oB=1,sB=":enter",aB=new RegExp(sB,"g"),lB=":leave",cB=new RegExp(lB,"g");function oI(t,e,i,n,r,o=new Map,s=new Map,a,l,c=[]){return new ob().buildKeyframes(t,e,i,n,r,o,s,a,l,c)}var ob=class{buildKeyframes(e,i,n,r,o,s,a,l,c,d=[]){c=c||new Vl;let u=new sb(e,i,c,r,o,d,[]);u.options=l;let f=l.delay?zi(l.delay):0;u.currentTimeline.delayNextStep(f),u.currentTimeline.setStyles([s],null,u.errors,l),nn(this,n,u);let m=u.timelines.filter(p=>p.containsAnimation());if(m.length&&a.size){let p;for(let _=m.length-1;_>=0;_--){let x=m[_];if(x.element===i){p=x;break}}p&&!p.allowOnlyTimelineStyles()&&p.setStyles([a],null,u.errors,l)}return m.length?m.map(p=>p.buildKeyframes()):[wb(i,[],[],[],0,f,"",!1)]}visitTrigger(e,i){}visitState(e,i){}visitTransition(e,i){}visitAnimateChild(e,i){let n=i.subInstructions.get(i.element);if(n){let r=i.createSubContext(e.options),o=i.currentTimeline.currentTime,s=this._visitSubInstructions(n,r,r.options);o!=s&&i.transformIntoNewTimeline(s)}i.previousNode=e}visitAnimateRef(e,i){let n=i.createSubContext(e.options);n.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],i,n),this.visitReference(e.animation,n),i.transformIntoNewTimeline(n.currentTimeline.currentTime),i.previousNode=e}_applyAnimationRefDelays(e,i,n){for(let r of e){let o=r?.delay;if(o){let s=typeof o=="number"?o:zi(jl(o,r?.params??{},i.errors));n.delayNextStep(s)}}}_visitSubInstructions(e,i,n){let o=i.currentTimeline.currentTime,s=n.duration!=null?zi(n.duration):null,a=n.delay!=null?zi(n.delay):null;return s!==0&&e.forEach(l=>{let c=i.appendInstructionToTimeline(l,s,a);o=Math.max(o,c.duration+c.delay)}),o}visitReference(e,i){i.updateOptions(e.options,!0),nn(this,e.animation,i),i.previousNode=e}visitSequence(e,i){let n=i.subContextCount,r=i,o=e.options;if(o&&(o.params||o.delay)&&(r=i.createSubContext(o),r.transformIntoNewTimeline(),o.delay!=null)){r.previousNode.type==ae.Style&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Uf);let s=zi(o.delay);r.delayNextStep(s)}e.steps.length&&(e.steps.forEach(s=>nn(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>n&&r.transformIntoNewTimeline()),i.previousNode=e}visitGroup(e,i){let n=[],r=i.currentTimeline.currentTime,o=e.options&&e.options.delay?zi(e.options.delay):0;e.steps.forEach(s=>{let a=i.createSubContext(e.options);o&&a.delayNextStep(o),nn(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),n.push(a.currentTimeline)}),n.forEach(s=>i.currentTimeline.mergeTimelineCollectedStyles(s)),i.transformIntoNewTimeline(r),i.previousNode=e}_visitTiming(e,i){if(e.dynamic){let n=e.strValue,r=i.params?jl(n,i.params,i.errors):n;return Vf(r,i.errors)}else return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,i){let n=i.currentAnimateTimings=this._visitTiming(e.timings,i),r=i.currentTimeline;n.delay&&(i.incrementTime(n.delay),r.snapshotCurrentStyles());let o=e.style;o.type==ae.Keyframes?this.visitKeyframes(o,i):(i.incrementTime(n.duration),this.visitStyle(o,i),r.applyStylesToKeyframe()),i.currentAnimateTimings=null,i.previousNode=e}visitStyle(e,i){let n=i.currentTimeline,r=i.currentAnimateTimings;!r&&n.hasCurrentStyleProperties()&&n.forwardFrame();let o=r&&r.easing||e.easing;e.isEmptyStep?n.applyEmptyStep(o):n.setStyles(e.styles,o,i.errors,i.options),i.previousNode=e}visitKeyframes(e,i){let n=i.currentAnimateTimings,r=i.currentTimeline.duration,o=n.duration,a=i.createSubContext().currentTimeline;a.easing=n.easing,e.styles.forEach(l=>{let c=l.offset||0;a.forwardTime(c*o),a.setStyles(l.styles,l.easing,i.errors,i.options),a.applyStylesToKeyframe()}),i.currentTimeline.mergeTimelineCollectedStyles(a),i.transformIntoNewTimeline(r+o),i.previousNode=e}visitQuery(e,i){let n=i.currentTimeline.currentTime,r=e.options||{},o=r.delay?zi(r.delay):0;o&&(i.previousNode.type===ae.Style||n==0&&i.currentTimeline.hasCurrentStyleProperties())&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Uf);let s=n,a=i.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!r.optional,i.errors);i.currentQueryTotal=a.length;let l=null;a.forEach((c,d)=>{i.currentQueryIndex=d;let u=i.createSubContext(e.options,c);o&&u.delayNextStep(o),c===i.element&&(l=u.currentTimeline),nn(this,e.animation,u),u.currentTimeline.applyStylesToKeyframe();let f=u.currentTimeline.currentTime;s=Math.max(s,f)}),i.currentQueryIndex=0,i.currentQueryTotal=0,i.transformIntoNewTimeline(s),l&&(i.currentTimeline.mergeTimelineCollectedStyles(l),i.currentTimeline.snapshotCurrentStyles()),i.previousNode=e}visitStagger(e,i){let n=i.parentContext,r=i.currentTimeline,o=e.timings,s=Math.abs(o.duration),a=s*(i.currentQueryTotal-1),l=s*i.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=a-l;break;case"full":l=n.currentStaggerTime;break}let d=i.currentTimeline;l&&d.delayNextStep(l);let u=d.currentTime;nn(this,e.animation,i),i.previousNode=e,n.currentStaggerTime=r.currentTime-u+(r.startTime-n.currentTimeline.startTime)}},Uf={},sb=class t{constructor(e,i,n,r,o,s,a,l){this._driver=e,this.element=i,this.subInstructions=n,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Uf,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new Hf(this._driver,i,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,i){if(!e)return;let n=e,r=this.options;n.duration!=null&&(r.duration=zi(n.duration)),n.delay!=null&&(r.delay=zi(n.delay));let o=n.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!i||!s.hasOwnProperty(a))&&(s[a]=jl(o[a],s,this.errors))})}}_copyOptions(){let e={};if(this.options){let i=this.options.params;if(i){let n=e.params={};Object.keys(i).forEach(r=>{n[r]=i[r]})}}return e}createSubContext(e=null,i,n){let r=i||this.element,o=new t(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,n||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(e),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(e){return this.previousNode=Uf,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,i,n){let r={duration:i??e.duration,delay:this.currentTimeline.currentTime+(n??0)+e.delay,easing:""},o=new ab(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,r,e.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,i,n,r,o,s){let a=[];if(r&&a.push(this.element),e.length>0){e=e.replace(aB,"."+this._enterClassName),e=e.replace(cB,"."+this._leaveClassName);let l=n!=1,c=this._driver.query(this.element,e,l);n!==0&&(c=n<0?c.slice(c.length+n,c.length):c.slice(0,n)),a.push(...c)}return!o&&a.length==0&&s.push(D2(i)),a}},Hf=class t{constructor(e,i,n,r){this._driver=e,this.element=i,this.startTime=n,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(i),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(i,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){let i=this._keyframes.size===1&&this._pendingStyles.size;this.duration||i?(this.forwardTime(this.currentTime+e),i&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,i){return this.applyStylesToKeyframe(),new t(this._driver,e,i||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=oB,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,i){this._localTimelineStyles.set(e,i),this._globalTimelineStyles.set(e,i),this._styleSummary.set(e,{time:this.currentTime,value:i})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[i,n]of this._globalTimelineStyles)this._backFill.set(i,n||si),this._currentKeyframe.set(i,si);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,i,n,r){i&&this._previousKeyframe.set("easing",i);let o=r&&r.params||{},s=dB(e,this._globalTimelineStyles);for(let[a,l]of s){let c=jl(l,o,n);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??si),this._updateStyle(a,c)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((e,i)=>{this._currentKeyframe.set(i,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,i)=>{this._currentKeyframe.has(i)||this._currentKeyframe.set(i,e)}))}snapshotCurrentStyles(){for(let[e,i]of this._localTimelineStyles)this._pendingStyles.set(e,i),this._updateStyle(e,i)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let e=[];for(let i in this._currentKeyframe)e.push(i);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((i,n)=>{let r=this._styleSummary.get(n);(!r||i.time>r.time)&&this._updateStyle(n,i.value)})}buildKeyframes(){this.applyStylesToKeyframe();let e=new Set,i=new Set,n=this._keyframes.size===1&&this.duration===0,r=[];this._keyframes.forEach((a,l)=>{let c=new Map([...this._backFill,...a]);c.forEach((d,u)=>{d===Uu?e.add(u):d===si&&i.add(u)}),n||c.set("offset",l/this.duration),r.push(c)});let o=[...e.values()],s=[...i.values()];if(n){let a=r[0],l=new Map(a);a.set("offset",0),l.set("offset",1),r=[a,l]}return wb(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}},ab=class extends Hf{constructor(e,i,n,r,o,s,a=!1){super(e,i,s.delay),this.keyframes=n,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:i,duration:n,easing:r}=this.timings;if(this._stretchStartingKeyframe&&i){let o=[],s=n+i,a=i/s,l=new Map(e[0]);l.set("offset",0),o.push(l);let c=new Map(e[0]);c.set("offset",HE(a)),o.push(c);let d=e.length-1;for(let u=1;u<=d;u++){let f=new Map(e[u]),m=f.get("offset"),p=i+m*n;f.set("offset",HE(p/s)),o.push(f)}n=s,i=0,r="",e=o}return wb(this.element,e,this.preStyleProps,this.postStyleProps,n,i,r,!0)}};function HE(t,e=3){let i=Math.pow(10,e-1);return Math.round(t*i)/i}function dB(t,e){let i=new Map,n;return t.forEach(r=>{if(r==="*"){n??=e.keys();for(let o of n)i.set(o,si)}else for(let[o,s]of r)i.set(o,s)}),i}function $E(t,e,i,n,r,o,s,a,l,c,d,u,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:i,fromStyles:o,toState:n,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:d,totalTime:u,errors:f}}var Zv={},$f=class{constructor(e,i,n){this._triggerName=e,this.ast=i,this._stateStyles=n}match(e,i,n,r){return uB(this.ast.matchers,e,i,n,r)}buildStyles(e,i,n){let r=this._stateStyles.get("*");return e!==void 0&&(r=this._stateStyles.get(e?.toString())||r),r?r.buildStyles(i,n):new Map}build(e,i,n,r,o,s,a,l,c,d){let u=[],f=this.ast.options&&this.ast.options.params||Zv,m=a&&a.params||Zv,p=this.buildStyles(n,m,u),_=l&&l.params||Zv,x=this.buildStyles(r,_,u),I=new Set,V=new Map,le=new Map,ne=r==="void",ut={params:sI(_,f),delay:this.ast.options?.delay},ke=d?[]:oI(e,i,this.ast.animation,o,s,p,x,ut,c,u),je=0;return ke.forEach(it=>{je=Math.max(it.duration+it.delay,je)}),u.length?$E(i,this._triggerName,n,r,ne,p,x,[],[],V,le,je,u):(ke.forEach(it=>{let ui=it.element,Ui=rn(V,ui,new Set);it.preStyleProps.forEach(wr=>Ui.add(wr));let Cb=rn(le,ui,new Set);it.postStyleProps.forEach(wr=>Cb.add(wr)),ui!==i&&I.add(ui)}),$E(i,this._triggerName,n,r,ne,p,x,ke,[...I.values()],V,le,je))}};function uB(t,e,i,n,r){return t.some(o=>o(e,i,n,r))}function sI(t,e){let i=w({},e);return Object.entries(t).forEach(([n,r])=>{r!=null&&(i[n]=r)}),i}var lb=class{constructor(e,i,n){this.styles=e,this.defaultParams=i,this.normalizer=n}buildStyles(e,i){let n=new Map,r=sI(e,this.defaultParams);return this.styles.styles.forEach(o=>{typeof o!="string"&&o.forEach((s,a)=>{s&&(s=jl(s,r,i));let l=this.normalizer.normalizePropertyName(a,i);s=this.normalizer.normalizeStyleValue(a,l,s,i),n.set(a,s)})}),n}};function fB(t,e,i){return new cb(t,e,i)}var cb=class{constructor(e,i,n){this.name=e,this.ast=i,this._normalizer=n,this.transitionFactories=[],this.states=new Map,i.states.forEach(r=>{let o=r.options&&r.options.params||{};this.states.set(r.name,new lb(r.style,o,n))}),WE(this.states,"true","1"),WE(this.states,"false","0"),i.transitions.forEach(r=>{this.transitionFactories.push(new $f(e,r,this.states))}),this.fallbackTransition=hB(e,this.states,this._normalizer)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,i,n,r){return this.transitionFactories.find(s=>s.match(e,i,n,r))||null}matchStyles(e,i,n){return this.fallbackTransition.buildStyles(e,i,n)}};function hB(t,e,i){let n=[(s,a)=>!0],r={type:ae.Sequence,steps:[],options:null},o={type:ae.Transition,animation:r,matchers:n,options:null,queryCount:0,depCount:0};return new $f(t,o,e)}function WE(t,e,i){t.has(e)?t.has(i)||t.set(i,t.get(e)):t.has(i)&&t.set(e,t.get(i))}var mB=new Vl,db=class{constructor(e,i,n){this.bodyNode=e,this._driver=i,this._normalizer=n,this._animations=new Map,this._playersById=new Map,this.players=[]}register(e,i){let n=[],r=[],o=rI(this._driver,i,n,r);if(n.length)throw M2(n);r.length&&void 0,this._animations.set(e,o)}_buildPlayer(e,i,n){let r=e.element,o=KE(this._normalizer,e.keyframes,i,n);return this._driver.animate(r,o,e.duration,e.delay,e.easing,[],!0)}create(e,i,n={}){let r=[],o=this._animations.get(e),s,a=new Map;if(o?(s=oI(this._driver,i,o,tI,Jv,new Map,new Map,n,mB,r),s.forEach(d=>{let u=rn(a,d.element,new Map);d.postStyleProps.forEach(f=>u.set(f,null))})):(r.push(T2()),s=[]),r.length)throw A2(r);a.forEach((d,u)=>{d.forEach((f,m)=>{d.set(m,this._driver.computeStyle(u,m,si))})});let l=s.map(d=>{let u=a.get(d.element);return this._buildPlayer(d,new Map,u)}),c=yr(l);return this._playersById.set(e,c),c.onDestroy(()=>this.destroy(e)),this.players.push(c),c}destroy(e){let i=this._getPlayer(e);i.destroy(),this._playersById.delete(e);let n=this.players.indexOf(i);n>=0&&this.players.splice(n,1)}_getPlayer(e){let i=this._playersById.get(e);if(!i)throw R2(e);return i}listen(e,i,n,r){let o=gb(i,"","","");return pb(this._getPlayer(e),n,o,r),()=>{}}command(e,i,n,r){if(n=="register"){this.register(e,r[0]);return}if(n=="create"){let s=r[0]||{};this.create(e,i,s);return}let o=this._getPlayer(e);switch(n){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(e);break}}},GE="ng-animate-queued",pB=".ng-animate-queued",Qv="ng-animate-disabled",gB=".ng-animate-disabled",vB="ng-star-inserted",bB=".ng-star-inserted",_B=[],aI={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},yB={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ln="__ng_removed",Bl=class{get params(){return this.options.params}constructor(e,i=""){this.namespaceId=i;let n=e&&e.hasOwnProperty("value"),r=n?e.value:e;if(this.value=xB(r),n){let o=e,{value:s}=o,a=Xf(o,["value"]);this.options=a}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){let i=e.params;if(i){let n=this.options.params;Object.keys(i).forEach(r=>{n[r]==null&&(n[r]=i[r])})}}},Ll="void",Kv=new Bl(Ll),ub=class{constructor(e,i,n){this.id=e,this.hostElement=i,this._engine=n,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+e,yn(i,this._hostClassName)}listen(e,i,n,r){if(!this._triggers.has(i))throw O2(n,i);if(n==null||n.length==0)throw k2(i);if(!DB(n))throw N2(n,i);let o=rn(this._elementListeners,e,[]),s={name:i,phase:n,callback:r};o.push(s);let a=rn(this._engine.statesByElement,e,new Map);return a.has(i)||(yn(e,kf),yn(e,kf+"-"+i),a.set(i,Kv)),()=>{this._engine.afterFlush(()=>{let l=o.indexOf(s);l>=0&&o.splice(l,1),this._triggers.has(i)||a.delete(i)})}}register(e,i){return this._triggers.has(e)?!1:(this._triggers.set(e,i),!0)}_getTrigger(e){let i=this._triggers.get(e);if(!i)throw F2(e);return i}trigger(e,i,n,r=!0){let o=this._getTrigger(i),s=new zl(this.id,i,e),a=this._engine.statesByElement.get(e);a||(yn(e,kf),yn(e,kf+"-"+i),this._engine.statesByElement.set(e,a=new Map));let l=a.get(i),c=new Bl(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(i,c),l||(l=Kv),!(c.value===Ll)&&l.value===c.value){if(!IB(l.params,c.params)){let _=[],x=o.matchStyles(l.value,l.params,_),I=o.matchStyles(c.value,c.params,_);_.length?this._engine.reportError(_):this._engine.afterFlush(()=>{yo(e,x),di(e,I)})}return}let f=rn(this._engine.playersByElement,e,[]);f.forEach(_=>{_.namespaceId==this.id&&_.triggerName==i&&_.queued&&_.destroy()});let m=o.matchTransition(l.value,c.value,e,c.params),p=!1;if(!m){if(!r)return;m=o.fallbackTransition,p=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:i,transition:m,fromState:l,toState:c,player:s,isFallbackTransition:p}),p||(yn(e,GE),s.onStart(()=>{Ws(e,GE)})),s.onDone(()=>{let _=this.players.indexOf(s);_>=0&&this.players.splice(_,1);let x=this._engine.playersByElement.get(e);if(x){let I=x.indexOf(s);I>=0&&x.splice(I,1)}}),this.players.push(s),f.push(s),s}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(i=>i.delete(e)),this._elementListeners.forEach((i,n)=>{this._elementListeners.set(n,i.filter(r=>r.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);let i=this._engine.playersByElement.get(e);i&&(i.forEach(n=>n.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,i){let n=this._engine.driver.query(e,jf,!0);n.forEach(r=>{if(r[Ln])return;let o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,i,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>n.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(e,i,n,r){let o=this._engine.statesByElement.get(e),s=new Map;if(o){let a=[];if(o.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){let d=this.trigger(e,c,Ll,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,e,!0,i,s),n&&yr(a).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){let i=this._elementListeners.get(e),n=this._engine.statesByElement.get(e);if(i&&n){let r=new Set;i.forEach(o=>{let s=o.name;if(r.has(s))return;r.add(s);let l=this._triggers.get(s).fallbackTransition,c=n.get(s)||Kv,d=new Bl(Ll),u=new zl(this.id,s,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:s,transition:l,fromState:c,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(e,i){let n=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,i),this.triggerLeaveAnimation(e,i,!0))return;let r=!1;if(n.totalAnimations){let o=n.players.length?n.playersByQueriedElement.get(e):[];if(o&&o.length)r=!0;else{let s=e;for(;s=s.parentNode;)if(n.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(e),r)n.markElementAsRemoved(this.id,e,!1,i);else{let o=e[Ln];(!o||o===aI)&&(n.afterFlush(()=>this.clearElementCache(e)),n.destroyInnerAnimations(e),n._onRemovalComplete(e,i))}}insertNode(e,i){yn(e,this._hostClassName)}drainQueuedTransitions(e){let i=[];return this._queue.forEach(n=>{let r=n.player;if(r.destroyed)return;let o=n.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==n.triggerName){let l=gb(o,n.triggerName,n.fromState.value,n.toState.value);l._data=e,pb(n.player,a.phase,l,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):i.push(n)}),this._queue=[],i.sort((n,r)=>{let o=n.transition.ast.depCount,s=r.transition.ast.depCount;return o==0||s==0?o-s:this._engine.driver.containsElement(n.element,r.element)?1:-1})}destroy(e){this.players.forEach(i=>i.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}},fb=class{_onRemovalComplete(e,i){this.onRemovalComplete(e,i)}constructor(e,i,n){this.bodyNode=e,this.driver=i,this._normalizer=n,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=(r,o)=>{}}get queuedPlayers(){let e=[];return this._namespaceList.forEach(i=>{i.players.forEach(n=>{n.queued&&e.push(n)})}),e}createNamespace(e,i){let n=new ub(e,i,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,i)?this._balanceNamespaceList(n,i):(this.newHostElements.set(i,n),this.collectEnterElement(i)),this._namespaceLookup[e]=n}_balanceNamespaceList(e,i){let n=this._namespaceList,r=this.namespacesByHostElement;if(n.length-1>=0){let s=!1,a=this.driver.getParentElement(i);for(;a;){let l=r.get(a);if(l){let c=n.indexOf(l);n.splice(c+1,0,e),s=!0;break}a=this.driver.getParentElement(a)}s||n.unshift(e)}else n.push(e);return r.set(i,e),e}register(e,i){let n=this._namespaceLookup[e];return n||(n=this.createNamespace(e,i)),n}registerTrigger(e,i,n){let r=this._namespaceLookup[e];r&&r.register(i,n)&&this.totalAnimations++}destroy(e,i){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let n=this._fetchNamespace(e);this.namespacesByHostElement.delete(n.hostElement);let r=this._namespaceList.indexOf(n);r>=0&&this._namespaceList.splice(r,1),n.destroy(i),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){let i=new Set,n=this.statesByElement.get(e);if(n){for(let r of n.values())if(r.namespaceId){let o=this._fetchNamespace(r.namespaceId);o&&i.add(o)}}return i}trigger(e,i,n,r){if(Pf(i)){let o=this._fetchNamespace(e);if(o)return o.trigger(i,n,r),!0}return!1}insertNode(e,i,n,r){if(!Pf(i))return;let o=i[Ln];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;let s=this.collectedLeaveElements.indexOf(i);s>=0&&this.collectedLeaveElements.splice(s,1)}if(e){let s=this._fetchNamespace(e);s&&s.insertNode(i,n)}r&&this.collectEnterElement(i)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,i){i?this.disabledNodes.has(e)||(this.disabledNodes.add(e),yn(e,Qv)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),Ws(e,Qv))}removeNode(e,i,n){if(Pf(i)){let r=e?this._fetchNamespace(e):null;r?r.removeNode(i,n):this.markElementAsRemoved(e,i,!1,n);let o=this.namespacesByHostElement.get(i);o&&o.id!==e&&o.removeNode(i,n)}else this._onRemovalComplete(i,n)}markElementAsRemoved(e,i,n,r,o){this.collectedLeaveElements.push(i),i[Ln]={namespaceId:e,setForRemoval:r,hasAnimation:n,removedBeforeQueried:!1,previousTriggersValues:o}}listen(e,i,n,r,o){return Pf(i)?this._fetchNamespace(e).listen(i,n,r,o):()=>{}}_buildInstruction(e,i,n,r,o){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,n,r,e.fromState.options,e.toState.options,i,o)}destroyInnerAnimations(e){let i=this.driver.query(e,jf,!0);i.forEach(n=>this.destroyActiveAnimationsForElement(n)),this.playersByQueriedElement.size!=0&&(i=this.driver.query(e,eb,!0),i.forEach(n=>this.finishActiveQueriedAnimationOnElement(n)))}destroyActiveAnimationsForElement(e){let i=this.playersByElement.get(e);i&&i.forEach(n=>{n.queued?n.markedForDestroy=!0:n.destroy()})}finishActiveQueriedAnimationOnElement(e){let i=this.playersByQueriedElement.get(e);i&&i.forEach(n=>n.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return yr(this.players).onDone(()=>e());e()})}processLeaveNode(e){let i=e[Ln];if(i&&i.setForRemoval){if(e[Ln]=aI,i.namespaceId){this.destroyInnerAnimations(e);let n=this._fetchNamespace(i.namespaceId);n&&n.clearElementCache(e)}this._onRemovalComplete(e,i.setForRemoval)}e.classList?.contains(Qv)&&this.markElementAsDisabled(e,!1),this.driver.query(e,gB,!0).forEach(n=>{this.markElementAsDisabled(n,!1)})}flush(e=-1){let i=[];if(this.newHostElements.size&&(this.newHostElements.forEach((n,r)=>this._balanceNamespaceList(n,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;nn()),this._flushFns=[],this._whenQuietFns.length){let n=this._whenQuietFns;this._whenQuietFns=[],i.length?yr(i).onDone(()=>{n.forEach(r=>r())}):n.forEach(r=>r())}}reportError(e){throw P2(e)}_flushAnimations(e,i){let n=new Vl,r=[],o=new Map,s=[],a=new Map,l=new Map,c=new Map,d=new Set;this.disabledNodes.forEach(F=>{d.add(F);let W=this.driver.query(F,pB,!0);for(let Y=0;Y{let Y=tI+_++;p.set(W,Y),F.forEach(Ie=>yn(Ie,Y))});let x=[],I=new Set,V=new Set;for(let F=0;FI.add(Ie)):V.add(W))}let le=new Map,ne=ZE(f,Array.from(I));ne.forEach((F,W)=>{let Y=Jv+_++;le.set(W,Y),F.forEach(Ie=>yn(Ie,Y))}),e.push(()=>{m.forEach((F,W)=>{let Y=p.get(W);F.forEach(Ie=>Ws(Ie,Y))}),ne.forEach((F,W)=>{let Y=le.get(W);F.forEach(Ie=>Ws(Ie,Y))}),x.forEach(F=>{this.processLeaveNode(F)})});let ut=[],ke=[];for(let F=this._namespaceList.length-1;F>=0;F--)this._namespaceList[F].drainQueuedTransitions(i).forEach(Y=>{let Ie=Y.player,mt=Y.element;if(ut.push(Ie),this.collectedEnterElements.length){let Et=mt[Ln];if(Et&&Et.setForMove){if(Et.previousTriggersValues&&Et.previousTriggersValues.has(Y.triggerName)){let xr=Et.previousTriggersValues.get(Y.triggerName),on=this.statesByElement.get(Y.element);if(on&&on.has(Y.triggerName)){let Wl=on.get(Y.triggerName);Wl.value=xr,on.set(Y.triggerName,Wl)}}Ie.destroy();return}}let jn=!u||!this.driver.containsElement(u,mt),Wt=le.get(mt),Hi=p.get(mt),Qe=this._buildInstruction(Y,n,Hi,Wt,jn);if(Qe.errors&&Qe.errors.length){ke.push(Qe);return}if(jn){Ie.onStart(()=>yo(mt,Qe.fromStyles)),Ie.onDestroy(()=>di(mt,Qe.toStyles)),r.push(Ie);return}if(Y.isFallbackTransition){Ie.onStart(()=>yo(mt,Qe.fromStyles)),Ie.onDestroy(()=>di(mt,Qe.toStyles)),r.push(Ie);return}let Sb=[];Qe.timelines.forEach(Et=>{Et.stretchStartingKeyframe=!0,this.disabledNodes.has(Et.element)||Sb.push(Et)}),Qe.timelines=Sb,n.append(mt,Qe.timelines);let wI={instruction:Qe,player:Ie,element:mt};s.push(wI),Qe.queriedElements.forEach(Et=>rn(a,Et,[]).push(Ie)),Qe.preStyleProps.forEach((Et,xr)=>{if(Et.size){let on=l.get(xr);on||l.set(xr,on=new Set),Et.forEach((Wl,Kf)=>on.add(Kf))}}),Qe.postStyleProps.forEach((Et,xr)=>{let on=c.get(xr);on||c.set(xr,on=new Set),Et.forEach((Wl,Kf)=>on.add(Kf))})});if(ke.length){let F=[];ke.forEach(W=>{F.push(L2(W.triggerName,W.errors))}),ut.forEach(W=>W.destroy()),this.reportError(F)}let je=new Map,it=new Map;s.forEach(F=>{let W=F.element;n.has(W)&&(it.set(W,W),this._beforeAnimationBuild(F.player.namespaceId,F.instruction,je))}),r.forEach(F=>{let W=F.element;this._getPreviousPlayers(W,!1,F.namespaceId,F.triggerName,null).forEach(Ie=>{rn(je,W,[]).push(Ie),Ie.destroy()})});let ui=x.filter(F=>QE(F,l,c)),Ui=new Map;YE(Ui,this.driver,V,c,si).forEach(F=>{QE(F,l,c)&&ui.push(F)});let wr=new Map;m.forEach((F,W)=>{YE(wr,this.driver,new Set(F),l,Uu)}),ui.forEach(F=>{let W=Ui.get(F),Y=wr.get(F);Ui.set(F,new Map([...W?.entries()??[],...Y?.entries()??[]]))});let Qf=[],Eb=[],Ib={};s.forEach(F=>{let{element:W,player:Y,instruction:Ie}=F;if(n.has(W)){if(d.has(W)){Y.onDestroy(()=>di(W,Ie.toStyles)),Y.disabled=!0,Y.overrideTotalTime(Ie.totalTime),r.push(Y);return}let mt=Ib;if(it.size>1){let Wt=W,Hi=[];for(;Wt=Wt.parentNode;){let Qe=it.get(Wt);if(Qe){mt=Qe;break}Hi.push(Wt)}Hi.forEach(Qe=>it.set(Qe,mt))}let jn=this._buildAnimation(Y.namespaceId,Ie,je,o,wr,Ui);if(Y.setRealPlayer(jn),mt===Ib)Qf.push(Y);else{let Wt=this.playersByElement.get(mt);Wt&&Wt.length&&(Y.parentPlayer=yr(Wt)),r.push(Y)}}else yo(W,Ie.fromStyles),Y.onDestroy(()=>di(W,Ie.toStyles)),Eb.push(Y),d.has(W)&&r.push(Y)}),Eb.forEach(F=>{let W=o.get(F.element);if(W&&W.length){let Y=yr(W);F.setRealPlayer(Y)}}),r.forEach(F=>{F.parentPlayer?F.syncPlayerEvents(F.parentPlayer):F.destroy()});for(let F=0;F!jn.destroyed);mt.length?CB(this,W,mt):this.processLeaveNode(W)}return x.length=0,Qf.forEach(F=>{this.players.push(F),F.onDone(()=>{F.destroy();let W=this.players.indexOf(F);this.players.splice(W,1)}),F.play()}),Qf}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,i,n,r,o){let s=[];if(i){let a=this.playersByQueriedElement.get(e);a&&(s=a)}else{let a=this.playersByElement.get(e);if(a){let l=!o||o==Ll;a.forEach(c=>{c.queued||!l&&c.triggerName!=r||s.push(c)})}}return(n||r)&&(s=s.filter(a=>!(n&&n!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(e,i,n){let r=i.triggerName,o=i.element,s=i.isRemovalTransition?void 0:e,a=i.isRemovalTransition?void 0:r;for(let l of i.timelines){let c=l.element,d=c!==o,u=rn(n,c,[]);this._getPreviousPlayers(c,d,s,a,i.toState).forEach(m=>{let p=m.getRealPlayer();p.beforeDestroy&&p.beforeDestroy(),m.destroy(),u.push(m)})}yo(o,i.fromStyles)}_buildAnimation(e,i,n,r,o,s){let a=i.triggerName,l=i.element,c=[],d=new Set,u=new Set,f=i.timelines.map(p=>{let _=p.element;d.add(_);let x=_[Ln];if(x&&x.removedBeforeQueried)return new fr(p.duration,p.delay);let I=_!==l,V=EB((n.get(_)||_B).map(je=>je.getRealPlayer())).filter(je=>{let it=je;return it.element?it.element===_:!1}),le=o.get(_),ne=s.get(_),ut=KE(this._normalizer,p.keyframes,le,ne),ke=this._buildPlayer(p,ut,V);if(p.subTimeline&&r&&u.add(_),I){let je=new zl(e,a,_);je.setRealPlayer(ke),c.push(je)}return ke});c.forEach(p=>{rn(this.playersByQueriedElement,p.element,[]).push(p),p.onDone(()=>wB(this.playersByQueriedElement,p.element,p))}),d.forEach(p=>yn(p,BE));let m=yr(f);return m.onDestroy(()=>{d.forEach(p=>Ws(p,BE)),di(l,i.toStyles)}),u.forEach(p=>{rn(r,p,[]).push(m)}),m}_buildPlayer(e,i,n){return i.length>0?this.driver.animate(e.element,i,e.duration,e.delay,e.easing,n):new fr(e.duration,e.delay)}},zl=class{constructor(e,i,n){this.namespaceId=e,this.triggerName=i,this.element=n,this._player=new fr,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((i,n)=>{i.forEach(r=>pb(e,n,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){let i=this._player;i.triggerCallback&&e.onStart(()=>i.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,i){rn(this._queuedCallbacks,e,[]).push(i)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return this.queued?!1: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(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){let i=this._player;i.triggerCallback&&i.triggerCallback(e)}};function wB(t,e,i){let n=t.get(e);if(n){if(n.length){let r=n.indexOf(i);n.splice(r,1)}n.length==0&&t.delete(e)}return n}function xB(t){return t??null}function Pf(t){return t&&t.nodeType===1}function DB(t){return t=="start"||t=="done"}function qE(t,e){let i=t.style.display;return t.style.display=e??"none",i}function YE(t,e,i,n,r){let o=[];i.forEach(l=>o.push(qE(l)));let s=[];n.forEach((l,c)=>{let d=new Map;l.forEach(u=>{let f=e.computeStyle(c,u,r);d.set(u,f),(!f||f.length==0)&&(c[Ln]=yB,s.push(c))}),t.set(c,d)});let a=0;return i.forEach(l=>qE(l,o[a++])),s}function ZE(t,e){let i=new Map;if(t.forEach(a=>i.set(a,[])),e.length==0)return i;let n=1,r=new Set(e),o=new Map;function s(a){if(!a)return n;let l=o.get(a);if(l)return l;let c=a.parentNode;return i.has(c)?l=c:r.has(c)?l=n:l=s(c),o.set(a,l),l}return e.forEach(a=>{let l=s(a);l!==n&&i.get(l).push(a)}),i}function yn(t,e){t.classList?.add(e)}function Ws(t,e){t.classList?.remove(e)}function CB(t,e,i){yr(i).onDone(()=>t.processLeaveNode(e))}function EB(t){let e=[];return lI(t,e),e}function lI(t,e){for(let i=0;ir.add(o)):e.set(t,n),i.delete(t),!0}var qs=class{constructor(e,i,n){this._driver=i,this._normalizer=n,this._triggerCache={},this.onRemovalComplete=(r,o)=>{},this._transitionEngine=new fb(e.body,i,n),this._timelineEngine=new db(e.body,i,n),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(e,i,n,r,o){let s=e+"-"+r,a=this._triggerCache[s];if(!a){let l=[],c=[],d=rI(this._driver,o,l,c);if(l.length)throw I2(r,l);c.length&&void 0,a=fB(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(i,r,a)}register(e,i){this._transitionEngine.register(e,i)}destroy(e,i){this._transitionEngine.destroy(e,i)}onInsert(e,i,n,r){this._transitionEngine.insertNode(e,i,n,r)}onRemove(e,i,n){this._transitionEngine.removeNode(e,i,n)}disableAnimations(e,i){this._transitionEngine.markElementAsDisabled(e,i)}process(e,i,n,r){if(n.charAt(0)=="@"){let[o,s]=jE(n),a=r;this._timelineEngine.command(o,i,s,a)}else this._transitionEngine.trigger(e,i,n,r)}listen(e,i,n,r,o){if(n.charAt(0)=="@"){let[s,a]=jE(n);return this._timelineEngine.listen(s,i,a,o)}return this._transitionEngine.listen(e,i,n,r,o)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}};function SB(t,e){let i=null,n=null;return Array.isArray(e)&&e.length?(i=Xv(e[0]),e.length>1&&(n=Xv(e[e.length-1]))):e instanceof Map&&(i=Xv(e)),i||n?new hb(t,i,n):null}var Gs=class Gs{constructor(e,i,n){this._element=e,this._startStyles=i,this._endStyles=n,this._state=0;let r=Gs.initialStylesByElement.get(e);r||Gs.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&di(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(di(this._element,this._initialStyles),this._endStyles&&(di(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(Gs.initialStylesByElement.delete(this._element),this._startStyles&&(yo(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(yo(this._element,this._endStyles),this._endStyles=null),di(this._element,this._initialStyles),this._state=3)}};Gs.initialStylesByElement=new WeakMap;var hb=Gs;function Xv(t){let e=null;return t.forEach((i,n)=>{MB(n)&&(e=e||new Map,e.set(n,i))}),e}function MB(t){return t==="display"||t==="position"}var Wf=class{constructor(e,i,n,r){this.element=e,this.keyframes=i,this.options=n,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:new Map;let i=()=>this._onFinish();this.domPlayer.addEventListener("finish",i),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",i)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(e){let i=[];return e.forEach(n=>{i.push(Object.fromEntries(n))}),i}_triggerWebAnimation(e,i,n){return e.animate(this._convertKeyframesToObject(i),n)}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(e=>e()),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,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_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(e=>e()),this._onDestroyFns=[])}setPosition(e){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=e*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((n,r)=>{r!=="offset"&&e.set(r,this._finished?n:yb(this.element,r))}),this.currentSnapshot=e}triggerCallback(e){let i=e==="start"?this._onStartFns:this._onDoneFns;i.forEach(n=>n()),i.length=0}},Gf=class{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}containsElement(e,i){return XE(e,i)}getParentElement(e){return vb(e)}query(e,i,n){return JE(e,i,n)}computeStyle(e,i,n){return yb(e,i)}animate(e,i,n,r,o,s=[]){let a=r==0?"both":"forwards",l={duration:n,delay:r,fill:a};o&&(l.easing=o);let c=new Map,d=s.filter(m=>m instanceof Wf);Y2(n,r)&&d.forEach(m=>{m.currentSnapshot.forEach((p,_)=>c.set(_,p))});let u=W2(i).map(m=>new Map(m));u=Z2(e,u,c);let f=SB(e,u);return new Wf(e,u,l,f)}};var Lf="@",cI="@.disabled",qf=class{constructor(e,i,n,r){this.namespaceId=e,this.delegate=i,this.engine=n,this._onDestroy=r,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,i){return this.delegate.createElement(e,i)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,i){this.delegate.appendChild(e,i),this.engine.onInsert(this.namespaceId,i,e,!1)}insertBefore(e,i,n,r=!0){this.delegate.insertBefore(e,i,n),this.engine.onInsert(this.namespaceId,i,e,r)}removeChild(e,i,n){this.engine.onRemove(this.namespaceId,i,this.delegate)}selectRootElement(e,i){return this.delegate.selectRootElement(e,i)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,i,n,r){this.delegate.setAttribute(e,i,n,r)}removeAttribute(e,i,n){this.delegate.removeAttribute(e,i,n)}addClass(e,i){this.delegate.addClass(e,i)}removeClass(e,i){this.delegate.removeClass(e,i)}setStyle(e,i,n,r){this.delegate.setStyle(e,i,n,r)}removeStyle(e,i,n){this.delegate.removeStyle(e,i,n)}setProperty(e,i,n){i.charAt(0)==Lf&&i==cI?this.disableAnimations(e,!!n):this.delegate.setProperty(e,i,n)}setValue(e,i){this.delegate.setValue(e,i)}listen(e,i,n){return this.delegate.listen(e,i,n)}disableAnimations(e,i){this.engine.disableAnimations(e,i)}},mb=class extends qf{constructor(e,i,n,r,o){super(i,n,r,o),this.factory=e,this.namespaceId=i}setProperty(e,i,n){i.charAt(0)==Lf?i.charAt(1)=="."&&i==cI?(n=n===void 0?!0:!!n,this.disableAnimations(e,n)):this.engine.process(this.namespaceId,e,i.slice(1),n):this.delegate.setProperty(e,i,n)}listen(e,i,n){if(i.charAt(0)==Lf){let r=TB(e),o=i.slice(1),s="";return o.charAt(0)!=Lf&&([o,s]=AB(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{let l=a._data||-1;this.factory.scheduleListenerCallback(l,n,a)})}return this.delegate.listen(e,i,n)}};function TB(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}function AB(t){let e=t.indexOf("."),i=t.substring(0,e),n=t.slice(e+1);return[i,n]}var Yf=class{constructor(e,i,n){this.delegate=e,this.engine=i,this._zone=n,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,i.onRemovalComplete=(r,o)=>{let s=o?.parentNode(r);s&&o.removeChild(s,r)}}createRenderer(e,i){let n="",r=this.delegate.createRenderer(e,i);if(!e||!i?.data?.animation){let c=this._rendererCache,d=c.get(r);if(!d){let u=()=>c.delete(r);d=new qf(n,r,this.engine,u),c.set(r,d)}return d}let o=i.id,s=i.id+"-"+this._currentId;this._currentId++,this.engine.register(s,e);let a=c=>{Array.isArray(c)?c.forEach(a):this.engine.registerTrigger(o,s,e,c.name,c)};return i.data.animation.forEach(a),new mb(this,s,r,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,i,n){if(e>=0&&ei(n));return}let r=this._animationCallbacksBuffer;r.length==0&&queueMicrotask(()=>{this._zone.run(()=>{r.forEach(o=>{let[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),r.push([i,n])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}};var OB=(()=>{let e=class e extends qs{constructor(n,r,o){super(n,r,o)}ngOnDestroy(){this.flush()}};e.\u0275fac=function(r){return new(r||e)(g(j),g(wo),g(xo))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();function kB(){return new Bf}function NB(t,e,i){return new Yf(t,e,i)}var dI=[{provide:xo,useFactory:kB},{provide:qs,useClass:OB},{provide:Ji,useFactory:NB,deps:[au,qs,A]}],FB=[{provide:wo,useFactory:()=>new Gf},{provide:ft,useValue:"BrowserAnimations"},...dI],jK=[{provide:wo,useClass:bb},{provide:ft,useValue:"NoopAnimations"},...dI];function uI(){return Mn("NgEagerAnimations"),[...FB]}var Hl="Service workers are disabled or not supported by this browser";function PB(t){return Gt(()=>zn(new Error(t)))}var Ys=class{constructor(e){if(this.serviceWorker=e,!e)this.worker=this.events=this.registration=PB(Hl);else{let n=Un(e,"controllerchange").pipe(N(()=>e.controller)),r=Gt(()=>k(e.controller)),o=sn(r,n);this.worker=o.pipe(ce(d=>!!d)),this.registration=this.worker.pipe(We(()=>e.getRegistration()));let c=Un(e,"message").pipe(N(d=>d.data)).pipe(ce(d=>d&&d.type)).pipe(bh());c.connect(),this.events=c}}postMessage(e,i){return this.worker.pipe(Ee(1),Me(n=>{n.postMessage(w({action:e},i))})).toPromise().then(()=>{})}postMessageWithOperation(e,i,n){let r=this.waitForOperationCompleted(n),o=this.postMessage(e,i);return Promise.all([o,r]).then(([,s])=>s)}generateNonce(){return Math.round(Math.random()*1e7)}eventsOfType(e){let i;return typeof e=="string"?i=n=>n.type===e:i=n=>e.includes(n.type),this.events.pipe(ce(i))}nextEventOfType(e){return this.eventsOfType(e).pipe(Ee(1))}waitForOperationCompleted(e){return this.eventsOfType("OPERATION_COMPLETED").pipe(ce(i=>i.nonce===e),Ee(1),N(i=>{if(i.result!==void 0)return i.result;throw new Error(i.error)})).toPromise()}get isEnabled(){return!!this.serviceWorker}},LB=(()=>{let e=class e{get isEnabled(){return this.sw.isEnabled}constructor(n){if(this.sw=n,this.pushManager=null,this.subscriptionChanges=new M,!n.isEnabled){this.messages=Ar,this.notificationClicks=Ar,this.subscription=Ar;return}this.messages=this.sw.eventsOfType("PUSH").pipe(N(o=>o.data)),this.notificationClicks=this.sw.eventsOfType("NOTIFICATION_CLICK").pipe(N(o=>o.data)),this.pushManager=this.sw.registration.pipe(N(o=>o.pushManager));let r=this.pushManager.pipe(We(o=>o.getSubscription()));this.subscription=gt(r,this.subscriptionChanges)}requestSubscription(n){if(!this.sw.isEnabled||this.pushManager===null)return Promise.reject(new Error(Hl));let r={userVisibleOnly:!0},o=this.decodeBase64(n.serverPublicKey.replace(/_/g,"/").replace(/-/g,"+")),s=new Uint8Array(new ArrayBuffer(o.length));for(let a=0;aa.subscribe(r)),Ee(1)).toPromise().then(a=>(this.subscriptionChanges.next(a),a))}unsubscribe(){if(!this.sw.isEnabled)return Promise.reject(new Error(Hl));let n=r=>{if(r===null)throw new Error("Not subscribed to push notifications.");return r.unsubscribe().then(o=>{if(!o)throw new Error("Unsubscribe failed!");this.subscriptionChanges.next(null)})};return this.subscription.pipe(Ee(1),We(n)).toPromise()}decodeBase64(n){return atob(n)}};e.\u0275fac=function(r){return new(r||e)(g(Ys))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})(),jB=(()=>{let e=class e{get isEnabled(){return this.sw.isEnabled}constructor(n){if(this.sw=n,!n.isEnabled){this.versionUpdates=Ar,this.unrecoverable=Ar;return}this.versionUpdates=this.sw.eventsOfType(["VERSION_DETECTED","VERSION_INSTALLATION_FAILED","VERSION_READY","NO_NEW_VERSION_DETECTED"]),this.unrecoverable=this.sw.eventsOfType("UNRECOVERABLE_STATE")}checkForUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(Hl));let n=this.sw.generateNonce();return this.sw.postMessageWithOperation("CHECK_FOR_UPDATES",{nonce:n},n)}activateUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(Hl));let n=this.sw.generateNonce();return this.sw.postMessageWithOperation("ACTIVATE_UPDATE",{nonce:n},n)}};e.\u0275fac=function(r){return new(r||e)(g(Ys))},e.\u0275prov=C({token:e,factory:e.\u0275fac});let t=e;return t})();var fI=new D("");function VB(t,e,i,n){return()=>{if(!(Oa(n)&&"serviceWorker"in navigator&&i.enabled!==!1))return;let r=t.get(A),o=t.get(Zt);r.runOutsideAngular(()=>{let a=navigator.serviceWorker,l=()=>a.controller?.postMessage({action:"INITIALIZE"});a.addEventListener("controllerchange",l),o.onDestroy(()=>{a.removeEventListener("controllerchange",l)})});let s;if(typeof i.registrationStrategy=="function")s=i.registrationStrategy();else{let[a,...l]=(i.registrationStrategy||"registerWhenStable:30000").split(":");switch(a){case"registerImmediately":s=k(null);break;case"registerWithDelay":s=hI(+l[0]||0);break;case"registerWhenStable":s=l[0]?gt(mI(t),hI(+l[0])):mI(t);break;default:throw new Error(`Unknown ServiceWorker registration strategy: ${i.registrationStrategy}`)}}r.runOutsideAngular(()=>s.pipe(Ee(1)).subscribe(()=>navigator.serviceWorker.register(e,{scope:i.scope}).catch(a=>console.error("Service worker registration failed with:",a))))}}function hI(t){return k(null).pipe(No(t))}function mI(t){return t.get(Zt).isStable.pipe(ce(i=>i))}function BB(t,e){return new Ys(Oa(e)&&t.enabled!==!1?navigator.serviceWorker:void 0)}var Ul=class{};function pI(t,e={}){return Wr([LB,jB,{provide:fI,useValue:t},{provide:Ul,useValue:e},{provide:Ys,useFactory:BB,deps:[Ul,Ht]},{provide:Ld,useFactory:VB,deps:[me,fI,Ul,Ht],multi:!0}])}var gI={providers:[wD(FE),Ax(Rx()),{provide:Gp,useClass:PE,multi:!0},uI(),pI("ngsw-worker.js",{enabled:!tx(),registrationStrategy:"registerWhenStable:30000"})]};var zB=["*",[["mat-toolbar-row"]]],UB=["*","mat-toolbar-row"],HB=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=R({type:e,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"],standalone:!0});let t=e;return t})(),vI=(()=>{let e=class e{constructor(n,r,o){this._elementRef=n,this._platform=r,this._document=o}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){this._toolbarRows.length}};e.\u0275fac=function(r){return new(r||e)(h(O),h(ye),h(j))},e.\u0275cmp=P({type:e,selectors:[["mat-toolbar"]],contentQueries:function(r,o,s){if(r&1&&Be(s,HB,5),r&2){let a;Q(a=K())&&(o._toolbarRows=a)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(r,o){r&2&&(dn(o.color?"mat-"+o.color:""),xe("mat-toolbar-multiple-rows",o._toolbarRows.length>0)("mat-toolbar-single-row",o._toolbarRows.length===0))},inputs:{color:"color"},exportAs:["matToolbar"],standalone:!0,features:[L],ngContentSelectors:UB,decls:2,vars:0,template:function(r,o){r&1&&(et(zB),_e(0),_e(1,1))},styles:[".mat-toolbar{background:var(--mat-toolbar-container-background-color);color:var(--mat-toolbar-container-text-color)}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font);font-size:var(--mat-toolbar-title-text-size);line-height:var(--mat-toolbar-title-text-line-height);font-weight:var(--mat-toolbar-title-text-weight);letter-spacing:var(--mat-toolbar-title-text-tracking);margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color);--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color)}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}"],encapsulation:2,changeDetection:0});let t=e;return t})();var $B=["mat-menu-item",""],WB=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],GB=["mat-icon, [matMenuItemIcon]","*"];function qB(t,e){t&1&&(wi(),v(0,"svg",2),ie(1,"polygon",3),b())}var YB=["*"];function ZB(t,e){if(t&1){let i=lt();v(0,"div",0),z("keydown",function(r){Te(i);let o=$();return Ae(o._handleKeydown(r))})("click",function(){Te(i);let r=$();return Ae(r.closed.emit("click"))})("@transformMenu.start",function(r){Te(i);let o=$();return Ae(o._onAnimationStart(r))})("@transformMenu.done",function(r){Te(i);let o=$();return Ae(o._onAnimationDone(r))}),v(1,"div",1),_e(2),b()()}if(t&2){let i=$();dn(i._classList),U("id",i.panelId)("@transformMenu",i._panelAnimationState),De("aria-label",i.ariaLabel||null)("aria-labelledby",i.ariaLabelledby||null)("aria-describedby",i.ariaDescribedby||null)}}var Db=new D("MAT_MENU_PANEL"),$l=(()=>{let e=class e{constructor(n,r,o,s,a){this._elementRef=n,this._document=r,this._focusMonitor=o,this._parentMenu=s,this._changeDetectorRef=a,this.role="menuitem",this.disabled=!1,this.disableRipple=!1,this._hovered=new M,this._focused=new M,this._highlighted=!1,this._triggersSubmenu=!1,s?.addItem?.(this)}focus(n,r){this._focusMonitor&&n?this._focusMonitor.focusVia(this._getHostElement(),n,r):this._getHostElement().focus(r),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(n){this.disabled&&(n.preventDefault(),n.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){let n=this._elementRef.nativeElement.cloneNode(!0),r=n.querySelectorAll("mat-icon, .material-icons");for(let o=0;o enter",bn("120ms cubic-bezier(0, 0, 0.2, 1)",dt({opacity:1,transform:"scale(1)"}))),tn("* => void",bn("100ms 25ms linear",dt({opacity:0})))]),fadeInItems:ai("fadeInItems",[li("showing",dt({opacity:1})),tn("void => *",[dt({opacity:0}),bn("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},MX=Zf.fadeInItems,TX=Zf.transformMenu,KB=0,XB=new D("mat-menu-default-options",{providedIn:"root",factory:JB});function JB(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}var Zs=(()=>{let e=class e{get xPosition(){return this._xPosition}set xPosition(n){this._xPosition=n,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(n){this._yPosition=n,this.setPositionClasses()}set panelClass(n){let r=this._previousPanelClass,o=w({},this._classList);r&&r.length&&r.split(" ").forEach(s=>{o[s]=!1}),this._previousPanelClass=n,n&&n.length&&(n.split(" ").forEach(s=>{o[s]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}get classList(){return this.panelClass}set classList(n){this.panelClass=n}constructor(n,r,o,s){this._elementRef=n,this._changeDetectorRef=s,this._elevationPrefix="mat-elevation-z",this._baseElevation=8,this._directDescendantItems=new Ki,this._classList={},this._panelAnimationState="void",this._animationDone=new M,this.closed=new G,this.close=this.closed,this.panelId=`mat-menu-panel-${KB++}`,this._injector=y(me),this.overlayPanelClass=o.overlayPanelClass||"",this._xPosition=o.xPosition,this._yPosition=o.yPosition,this.backdropClass=o.backdropClass,this.overlapTrigger=o.overlapTrigger,this.hasBackdrop=o.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new Nu(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(yt(this._directDescendantItems),We(n=>gt(...n.map(r=>r._focused)))).subscribe(n=>this._keyManager.updateActiveItem(n)),this._directDescendantItems.changes.subscribe(n=>{let r=this._keyManager;if(this._panelAnimationState==="enter"&&r.activeItem?._hasFocus()){let o=n.toArray(),s=Math.max(0,Math.min(o.length-1,r.activeItemIndex||0));o[s]&&!o[s].disabled?r.setActiveItem(s):r.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy()}_hovered(){return this._directDescendantItems.changes.pipe(yt(this._directDescendantItems),We(r=>gt(...r.map(o=>o._hovered))))}addItem(n){}removeItem(n){}_handleKeydown(n){let r=n.keyCode,o=this._keyManager;switch(r){case 27:Ct(n)||(n.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&this.direction==="ltr"&&this.closed.emit("keydown");break;case 39:this.parentMenu&&this.direction==="rtl"&&this.closed.emit("keydown");break;default:(r===38||r===40)&&o.setFocusOrigin("keyboard"),o.onKeydown(n);return}n.stopPropagation()}focusFirstItem(n="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=cn(()=>{let r=null;if(this._directDescendantItems.length&&(r=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!r||!r.contains(document.activeElement)){let o=this._keyManager;o.setFocusOrigin(n).setFirstItemActive(),!o.activeItem&&r&&r.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(n){let r=Math.min(this._baseElevation+n,24),o=`${this._elevationPrefix}${r}`,s=Object.keys(this._classList).find(a=>a.startsWith(this._elevationPrefix));if(!s||s===this._previousElevation){let a=w({},this._classList);this._previousElevation&&(a[this._previousElevation]=!1),a[o]=!0,this._previousElevation=o,this._classList=a}}setPositionClasses(n=this.xPosition,r=this.yPosition){this._classList=Z(w({},this._classList),{"mat-menu-before":n==="before","mat-menu-after":n==="after","mat-menu-above":r==="above","mat-menu-below":r==="below"}),this._changeDetectorRef?.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(n){this._animationDone.next(n),this._isAnimating=!1}_onAnimationStart(n){this._isAnimating=!0,n.toState==="enter"&&this._keyManager.activeItemIndex===0&&(n.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(yt(this._allItems)).subscribe(n=>{this._directDescendantItems.reset(n.filter(r=>r._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}};e.\u0275fac=function(r){return new(r||e)(h(O),h(A),h(XB),h(Fe))},e.\u0275cmp=P({type:e,selectors:[["mat-menu"]],contentQueries:function(r,o,s){if(r&1&&(Be(s,QB,5),Be(s,$l,5),Be(s,$l,4)),r&2){let a;Q(a=K())&&(o.lazyContent=a.first),Q(a=K())&&(o._allItems=a),Q(a=K())&&(o.items=a)}},viewQuery:function(r,o){if(r&1&&Ye(Ge,5),r&2){let s;Q(s=K())&&(o.templateRef=s.first)}},hostVars:3,hostBindings:function(r,o){r&2&&De("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",te],hasBackdrop:[2,"hasBackdrop","hasBackdrop",n=>n==null?null:te(n)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],standalone:!0,features:[Ne([{provide:Db,useExisting:e}]),Ve,L],ngContentSelectors:YB,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mat-mdc-elevation-specific",3,"keydown","click","id"],[1,"mat-mdc-menu-content"]],template:function(r,o){r&1&&(et(),B(0,ZB,3,7,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color);margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:var(--mat-menu-item-trailing-spacing);padding-right:var(--mat-menu-item-leading-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]),.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon])[dir=rtl]{padding-left:var(--mat-menu-item-with-icon-trailing-spacing);padding-right:var(--mat-menu-item-with-icon-leading-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[Zf.transformMenu,Zf.fadeInItems]},changeDetection:0});let t=e;return t})(),ez=new D("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{let t=y(nt);return()=>t.scrollStrategies.reposition()}});var bI=mn({passive:!0});var _I=(()=>{let e=class e{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(n){this.menu=n}get menu(){return this._menu}set menu(n){n!==this._menu&&(this._menu=n,this._menuCloseSubscription.unsubscribe(),n&&(this._parentMaterialMenu,this._menuCloseSubscription=n.close.subscribe(r=>{this._destroyMenu(r),(r==="click"||r==="tab")&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(r)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}constructor(n,r,o,s,a,l,c,d,u){this._overlay=n,this._element=r,this._viewContainerRef=o,this._menuItemInstance=l,this._dir=c,this._focusMonitor=d,this._ngZone=u,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=ge.EMPTY,this._hoverSubscription=ge.EMPTY,this._menuCloseSubscription=ge.EMPTY,this._changeDetectorRef=y(Fe),this._handleTouchStart=f=>{cl(f)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new G,this.onMenuOpen=this.menuOpened,this.menuClosed=new G,this.onMenuClose=this.menuClosed,this._scrollStrategy=s,this._parentMaterialMenu=a instanceof Zs?a:void 0,r.nativeElement.addEventListener("touchstart",this._handleTouchStart,bI)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,bI),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){let n=this.menu;if(this._menuOpen||!n)return;let r=this._createOverlay(n),o=r.getConfig(),s=o.positionStrategy;this._setPosition(n,s),o.hasBackdrop=n.hasBackdrop==null?!this.triggersSubmenu():n.hasBackdrop,r.attach(this._getPortal(n)),n.lazyContent&&n.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(n),n instanceof Zs&&(n._startAnimation(),n._directDescendantItems.changes.pipe(fe(n.close)).subscribe(()=>{s.withLockedPosition(!1).reapplyLastPosition(),s.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(n,r){this._focusMonitor&&n?this._focusMonitor.focusVia(this._element,n,r):this._element.nativeElement.focus(r)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(n){if(!this._overlayRef||!this.menuOpen)return;let r=this.menu;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&(n==="keydown"||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,r instanceof Zs?(r._resetAnimation(),r.lazyContent?r._animationDone.pipe(ce(o=>o.toState==="void"),Ee(1),fe(r.lazyContent._attached)).subscribe({next:()=>r.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),r?.lazyContent?.detach())}_initMenu(n){n.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,n.direction=this.dir,this._setMenuElevation(n),n.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(n){if(n.setElevation){let r=0,o=n.parentMenu;for(;o;)r++,o=o.parentMenu;n.setElevation(r)}}_setIsMenuOpen(n){n!==this._menuOpen&&(this._menuOpen=n,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(n),this._changeDetectorRef.markForCheck())}_createOverlay(n){if(!this._overlayRef){let r=this._getOverlayConfig(n);this._subscribeToPositions(n,r.positionStrategy),this._overlayRef=this._overlay.create(r),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(n){return new ci({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:n.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:n.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(n,r){n.setPositionClasses&&r.positionChanges.subscribe(o=>{let s=o.connectionPair.overlayX==="start"?"after":"before",a=o.connectionPair.overlayY==="top"?"below":"above";this._ngZone?this._ngZone.run(()=>n.setPositionClasses(s,a)):n.setPositionClasses(s,a)})}_setPosition(n,r){let[o,s]=n.xPosition==="before"?["end","start"]:["start","end"],[a,l]=n.yPosition==="above"?["bottom","top"]:["top","bottom"],[c,d]=[a,l],[u,f]=[o,s],m=0;if(this.triggersSubmenu()){if(f=o=n.xPosition==="before"?"start":"end",s=u=o==="end"?"start":"end",this._parentMaterialMenu){if(this._parentInnerPadding==null){let p=this._parentMaterialMenu.items.first;this._parentInnerPadding=p?p._getHostElement().offsetTop:0}m=a==="bottom"?this._parentInnerPadding:-this._parentInnerPadding}}else n.overlapTrigger||(c=a==="top"?"bottom":"top",d=l==="top"?"bottom":"top");r.withPositions([{originX:o,originY:c,overlayX:u,overlayY:a,offsetY:m},{originX:s,originY:c,overlayX:f,overlayY:a,offsetY:m},{originX:o,originY:d,overlayX:u,overlayY:l,offsetY:-m},{originX:s,originY:d,overlayX:f,overlayY:l,offsetY:-m}])}_menuClosingActions(){let n=this._overlayRef.backdropClick(),r=this._overlayRef.detachments(),o=this._parentMaterialMenu?this._parentMaterialMenu.closed:k(),s=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(ce(a=>a!==this._menuItemInstance),ce(()=>this._menuOpen)):k();return gt(n,o,s,r)}_handleMousedown(n){ll(n)||(this._openedBy=n.button===0?"mouse":void 0,this.triggersSubmenu()&&n.preventDefault())}_handleKeydown(n){let r=n.keyCode;(r===13||r===32)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(r===39&&this.dir==="ltr"||r===37&&this.dir==="rtl")&&(this._openedBy="keyboard",this.openMenu())}_handleClick(n){this.triggersSubmenu()?(n.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(ce(n=>n===this._menuItemInstance&&!n.disabled),No(0,ta)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof Zs&&this.menu._isAnimating?this.menu._animationDone.pipe(Ee(1),No(0,ta),fe(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(n){return(!this._portal||this._portal.templateRef!==n.templateRef)&&(this._portal=new Nn(n.templateRef,this._viewContainerRef)),this._portal}};e.\u0275fac=function(r){return new(r||e)(h(nt),h(O),h(Je),h(ez),h(Db,8),h($l,10),h(bt,8),h(On),h(A))},e.\u0275dir=R({type:e,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(r,o){r&1&&z("click",function(a){return o._handleClick(a)})("mousedown",function(a){return o._handleMousedown(a)})("keydown",function(a){return o._handleKeydown(a)}),r&2&&De("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],standalone:!0});let t=e;return t})();function tz(t,e){if(t&1){let i=lt();v(0,"button",7),T(1),b(),v(2,"mat-menu",null,0)(4,"button",8),z("click",function(){Te(i);let r=$();return Ae(r.router.navigate(["user"]))}),T(5,"\u7528\u6237\u7BA1\u7406"),b(),v(6,"button",8),z("click",function(){Te(i);let r=$();return Ae(r.router.navigate(["log"]))}),T(7,"\u64CD\u4F5C\u65E5\u5FD7"),b(),v(8,"button",8),z("click",function(){Te(i);let r=$();return Ae(r.user_srv.auth_logout())}),T(9,"\u9000\u51FA"),b()()}if(t&2){let i=Qr(3),n=$();U("matMenuTriggerFor",i),E(),Le(" ","welcome, "+n.user_srv.user().username?n.user_srv.user().username:"Plz Login"," ")}}function nz(t,e){if(t&1){let i=lt();v(0,"div",6)(1,"ul")(2,"li",9),z("click",function(){Te(i);let r=$();return Ae(r.router.navigate(["user"]))}),T(3,"\u7528\u6237\u7BA1\u7406"),b(),v(4,"li",9),z("click",function(){Te(i);let r=$();return Ae(r.router.navigate(["log"]))}),T(5,"\u64CD\u4F5C\u65E5\u5FD7"),b()()()}if(t&2){let i=$();E(2),dn(i.url==="user"?"active":""),E(2),dn(i.url==="log"?"active":"")}}var yI=(()=>{let e=class e{constructor(n,r){this.router=n,this.user_srv=r,this.title="front",this.url="",this.router.events.subscribe(o=>{if(o instanceof ki){let s=o.url;s.startsWith("/")&&(s=s.slice(1)),s=s.split("/")[0],console.log("[D] router val=",s),this.url=s}})}};e.\u0275fac=function(r){return new(r||e)(h(ur),h(_n))},e.\u0275cmp=P({type:e,selectors:[["app-root"]],standalone:!0,features:[L],decls:9,vars:2,consts:[["menu","matMenu"],[1,"title"],["color","primary"],[1,"home-button",3,"click"],[1,"example-spacer"],[1,"content"],[1,"side-container"],["mat-button","","aria-label","title menu button",1,"title-menu",3,"matMenuTriggerFor"],["mat-menu-item","",3,"click"],[3,"click"]],template:function(r,o){r&1&&(v(0,"div",1)(1,"mat-toolbar",2)(2,"span",3),z("click",function(){return o.router.navigate([""])}),T(3,"Ult App"),b(),ie(4,"span",4),B(5,tz,10,2),b()(),v(6,"div",5),B(7,nz,6,4,"div",6),ie(8,"router-outlet"),b()),r&2&&(E(5),be(o.user_srv.user().username!=""?5:-1),E(2),be(o.url!="login"?7:-1))},dependencies:[tt,Pg,vI,$t,_I,Zs,$l],styles:["[_nghost-%COMP%]{display:flex;height:100%;max-height:100%;width:100%;flex-direction:column}[_nghost-%COMP%] div.title[_ngcontent-%COMP%]{width:100%;max-width:100%;height:64px}[_nghost-%COMP%] div.title[_ngcontent-%COMP%] span.home-button[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] div.title[_ngcontent-%COMP%] button.title-menu[_ngcontent-%COMP%]{margin-left:auto}[_nghost-%COMP%] div.content[_ngcontent-%COMP%]{width:100%;height:calc(100% - 64px);max-height:calc(100% - 64px);display:flex;flex-direction:row}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%]{display:flex;width:235px;max-width:235px;min-width:235px;flex-direction:column;border-right:1px solid #ddd;max-height:100%;overflow-y:auto}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{width:100%;margin:0;padding:0}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{list-style:none;display:flex;align-items:center;text-indent:1rem;width:100%;height:48px;font-size:16px}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover{background:#efefef;cursor:pointer}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li.active[_ngcontent-%COMP%]{background:#dddded;color:#3c3fa9}@media screen and (max-width: 40rem){[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%]{display:none}}"]});let t=e;return t})();jx(yI,gI).catch(t=>console.error(t)); diff --git a/internal/middleware/front/dist/front/browser/manifest.webmanifest b/internal/middleware/front/dist/front/browser/manifest.webmanifest new file mode 100644 index 0000000..d07c0e9 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/manifest.webmanifest @@ -0,0 +1,59 @@ +{ + "name": "front", + "short_name": "front", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "./", + "start_url": "./", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +} diff --git a/internal/middleware/front/dist/front/browser/ngsw-worker.js b/internal/middleware/front/dist/front/browser/ngsw-worker.js new file mode 100755 index 0000000..66ee978 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/ngsw-worker.js @@ -0,0 +1,1863 @@ +(() => { + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/named-cache-storage.mjs + var NamedCacheStorage = class { + constructor(original, cacheNamePrefix) { + this.original = original; + this.cacheNamePrefix = cacheNamePrefix; + } + delete(cacheName) { + return this.original.delete(`${this.cacheNamePrefix}:${cacheName}`); + } + has(cacheName) { + return this.original.has(`${this.cacheNamePrefix}:${cacheName}`); + } + async keys() { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.original.keys(); + const ownCacheNames = allCacheNames.filter((name) => name.startsWith(prefix)); + return ownCacheNames.map((name) => name.slice(prefix.length)); + } + match(request, options) { + return this.original.match(request, options); + } + async open(cacheName) { + const cache = await this.original.open(`${this.cacheNamePrefix}:${cacheName}`); + return Object.assign(cache, { name: cacheName }); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/adapter.mjs + var Adapter = class { + constructor(scopeUrl, caches) { + this.scopeUrl = scopeUrl; + const parsedScopeUrl = this.parseUrl(this.scopeUrl); + this.origin = parsedScopeUrl.origin; + this.caches = new NamedCacheStorage(caches, `ngsw:${parsedScopeUrl.path}`); + } + newRequest(input, init) { + return new Request(input, init); + } + newResponse(body, init) { + return new Response(body, init); + } + newHeaders(headers) { + return new Headers(headers); + } + isClient(source) { + return source instanceof Client; + } + get time() { + return Date.now(); + } + normalizeUrl(url) { + const parsed = this.parseUrl(url, this.scopeUrl); + return parsed.origin === this.origin ? parsed.path : url; + } + parseUrl(url, relativeTo) { + const parsed = !relativeTo ? new URL(url) : new URL(url, relativeTo); + return { origin: parsed.origin, path: parsed.pathname, search: parsed.search }; + } + timeout(ms) { + return new Promise((resolve) => { + setTimeout(() => resolve(), ms); + }); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/database.mjs + var NotFound = class { + constructor(table, key) { + this.table = table; + this.key = key; + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/db-cache.mjs + var CacheDatabase = class { + constructor(adapter2) { + this.adapter = adapter2; + this.cacheNamePrefix = "db"; + this.tables = /* @__PURE__ */ new Map(); + } + "delete"(name) { + if (this.tables.has(name)) { + this.tables.delete(name); + } + return this.adapter.caches.delete(`${this.cacheNamePrefix}:${name}`); + } + async list() { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.adapter.caches.keys(); + const dbCacheNames = allCacheNames.filter((name) => name.startsWith(prefix)); + return dbCacheNames.map((name) => name.slice(prefix.length)); + } + async open(name, cacheQueryOptions) { + if (!this.tables.has(name)) { + const cache = await this.adapter.caches.open(`${this.cacheNamePrefix}:${name}`); + const table = new CacheTable(name, cache, this.adapter, cacheQueryOptions); + this.tables.set(name, table); + } + return this.tables.get(name); + } + }; + var CacheTable = class { + constructor(name, cache, adapter2, cacheQueryOptions) { + this.name = name; + this.cache = cache; + this.adapter = adapter2; + this.cacheQueryOptions = cacheQueryOptions; + this.cacheName = this.cache.name; + } + request(key) { + return this.adapter.newRequest("/" + key); + } + "delete"(key) { + return this.cache.delete(this.request(key), this.cacheQueryOptions); + } + keys() { + return this.cache.keys().then((requests) => requests.map((req) => req.url.slice(1))); + } + read(key) { + return this.cache.match(this.request(key), this.cacheQueryOptions).then((res) => { + if (res === void 0) { + return Promise.reject(new NotFound(this.name, key)); + } + return res.json(); + }); + } + write(key, value) { + return this.cache.put(this.request(key), this.adapter.newResponse(JSON.stringify(value))); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/api.mjs + var UpdateCacheStatus; + (function(UpdateCacheStatus2) { + UpdateCacheStatus2[UpdateCacheStatus2["NOT_CACHED"] = 0] = "NOT_CACHED"; + UpdateCacheStatus2[UpdateCacheStatus2["CACHED_BUT_UNUSED"] = 1] = "CACHED_BUT_UNUSED"; + UpdateCacheStatus2[UpdateCacheStatus2["CACHED"] = 2] = "CACHED"; + })(UpdateCacheStatus || (UpdateCacheStatus = {})); + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/error.mjs + var SwCriticalError = class extends Error { + constructor() { + super(...arguments); + this.isCritical = true; + } + }; + function errorToString(error) { + if (error instanceof Error) { + return `${error.message} +${error.stack}`; + } else { + return `${error}`; + } + } + var SwUnrecoverableStateError = class extends SwCriticalError { + constructor() { + super(...arguments); + this.isUnrecoverableState = true; + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/sha1.mjs + function sha1(str) { + const utf8 = str; + const words32 = stringToWords32(utf8, Endian.Big); + return _sha1(words32, utf8.length * 8); + } + function sha1Binary(buffer) { + const words32 = arrayBufferToWords32(buffer, Endian.Big); + return _sha1(words32, buffer.byteLength * 8); + } + function _sha1(words32, len) { + const w = []; + let [a, b, c, d, e] = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + words32[len >> 5] |= 128 << 24 - len % 32; + words32[(len + 64 >> 9 << 4) + 15] = len; + for (let i = 0; i < words32.length; i += 16) { + const [h0, h1, h2, h3, h4] = [a, b, c, d, e]; + for (let j = 0; j < 80; j++) { + if (j < 16) { + w[j] = words32[i + j]; + } else { + w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + const [f, k] = fk(j, b, c, d); + const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); + [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp]; + } + [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)]; + } + return byteStringToHexString(words32ToByteString([a, b, c, d, e])); + } + function add32(a, b) { + return add32to64(a, b)[1]; + } + function add32to64(a, b) { + const low = (a & 65535) + (b & 65535); + const high = (a >>> 16) + (b >>> 16) + (low >>> 16); + return [high >>> 16, high << 16 | low & 65535]; + } + function rol32(a, count) { + return a << count | a >>> 32 - count; + } + var Endian; + (function(Endian2) { + Endian2[Endian2["Little"] = 0] = "Little"; + Endian2[Endian2["Big"] = 1] = "Big"; + })(Endian || (Endian = {})); + function fk(index, b, c, d) { + if (index < 20) { + return [b & c | ~b & d, 1518500249]; + } + if (index < 40) { + return [b ^ c ^ d, 1859775393]; + } + if (index < 60) { + return [b & c | b & d | c & d, 2400959708]; + } + return [b ^ c ^ d, 3395469782]; + } + function stringToWords32(str, endian) { + const size = str.length + 3 >>> 2; + const words32 = []; + for (let i = 0; i < size; i++) { + words32[i] = wordAt(str, i * 4, endian); + } + return words32; + } + function arrayBufferToWords32(buffer, endian) { + const size = buffer.byteLength + 3 >>> 2; + const words32 = []; + const view = new Uint8Array(buffer); + for (let i = 0; i < size; i++) { + words32[i] = wordAt(view, i * 4, endian); + } + return words32; + } + function byteAt(str, index) { + if (typeof str === "string") { + return index >= str.length ? 0 : str.charCodeAt(index) & 255; + } else { + return index >= str.byteLength ? 0 : str[index] & 255; + } + } + function wordAt(str, index, endian) { + let word = 0; + if (endian === Endian.Big) { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 24 - 8 * i; + } + } else { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 8 * i; + } + } + return word; + } + function words32ToByteString(words32) { + return words32.reduce((str, word) => str + word32ToByteString(word), ""); + } + function word32ToByteString(word) { + let str = ""; + for (let i = 0; i < 4; i++) { + str += String.fromCharCode(word >>> 8 * (3 - i) & 255); + } + return str; + } + function byteStringToHexString(str) { + let hex = ""; + for (let i = 0; i < str.length; i++) { + const b = byteAt(str, i); + hex += (b >>> 4).toString(16) + (b & 15).toString(16); + } + return hex.toLowerCase(); + } + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/assets.mjs + var AssetGroup = class { + constructor(scope2, adapter2, idle, config, hashes, db, cacheNamePrefix) { + this.scope = scope2; + this.adapter = adapter2; + this.idle = idle; + this.config = config; + this.hashes = hashes; + this.db = db; + this.inFlightRequests = /* @__PURE__ */ new Map(); + this.urls = []; + this.patterns = []; + this.name = config.name; + this.urls = config.urls.map((url) => adapter2.normalizeUrl(url)); + this.patterns = config.patterns.map((pattern) => new RegExp(pattern)); + this.cache = adapter2.caches.open(`${cacheNamePrefix}:${config.name}:cache`); + this.metadata = this.db.open(`${cacheNamePrefix}:${config.name}:meta`, config.cacheQueryOptions); + } + async cacheStatus(url) { + const cache = await this.cache; + const meta = await this.metadata; + const req = this.adapter.newRequest(url); + const res = await cache.match(req, this.config.cacheQueryOptions); + if (res === void 0) { + return UpdateCacheStatus.NOT_CACHED; + } + try { + const data = await meta.read(req.url); + if (!data.used) { + return UpdateCacheStatus.CACHED_BUT_UNUSED; + } + } catch (_) { + } + return UpdateCacheStatus.CACHED; + } + async getCacheNames() { + const [cache, metadata] = await Promise.all([this.cache, this.metadata]); + return [cache.name, metadata.cacheName]; + } + async handleFetch(req, _event) { + const url = this.adapter.normalizeUrl(req.url); + if (this.urls.indexOf(url) !== -1 || this.patterns.some((pattern) => pattern.test(url))) { + const cache = await this.cache; + let cachedResponse; + try { + cachedResponse = await cache.match(req, this.config.cacheQueryOptions); + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match: ${error}`); + } + if (cachedResponse !== void 0) { + if (this.hashes.has(url)) { + return cachedResponse; + } else { + if (await this.needToRevalidate(req, cachedResponse)) { + this.idle.schedule(`revalidate(${cache.name}): ${req.url}`, async () => { + await this.fetchAndCacheOnce(req); + }); + } + return cachedResponse; + } + } + const res = await this.fetchAndCacheOnce(this.newRequestWithMetadata(req.url, req)); + return res.clone(); + } else { + return null; + } + } + async needToRevalidate(req, res) { + if (res.headers.has("Cache-Control")) { + const cacheControl = res.headers.get("Cache-Control"); + const cacheDirectives = cacheControl.split(",").map((v) => v.trim()).map((v) => v.split("=")); + cacheDirectives.forEach((v) => v[0] = v[0].toLowerCase()); + const maxAgeDirective = cacheDirectives.find((v) => v[0] === "max-age"); + const cacheAge = maxAgeDirective ? maxAgeDirective[1] : void 0; + if (!cacheAge) { + return true; + } + try { + const maxAge = 1e3 * parseInt(cacheAge); + let ts; + try { + const metaTable = await this.metadata; + ts = (await metaTable.read(req.url)).ts; + } catch (e) { + const date = res.headers.get("Date"); + if (date === null) { + return true; + } + ts = Date.parse(date); + } + const age = this.adapter.time - ts; + return age < 0 || age > maxAge; + } catch (e) { + return true; + } + } else if (res.headers.has("Expires")) { + const expiresStr = res.headers.get("Expires"); + try { + return this.adapter.time > Date.parse(expiresStr); + } catch (e) { + return true; + } + } else { + return true; + } + } + async fetchFromCacheOnly(url) { + const cache = await this.cache; + const metaTable = await this.metadata; + const request = this.adapter.newRequest(url); + const response = await cache.match(request, this.config.cacheQueryOptions); + if (response === void 0) { + return null; + } + let metadata = void 0; + try { + metadata = await metaTable.read(request.url); + } catch (e) { + } + return { response, metadata }; + } + async unhashedResources() { + const cache = await this.cache; + return (await cache.keys()).map((request) => this.adapter.normalizeUrl(request.url)).filter((url) => !this.hashes.has(url)); + } + async fetchAndCacheOnce(req, used = true) { + if (this.inFlightRequests.has(req.url)) { + return this.inFlightRequests.get(req.url); + } + const fetchOp = this.fetchFromNetwork(req); + this.inFlightRequests.set(req.url, fetchOp); + try { + const res = await fetchOp; + if (!res.ok) { + throw new Error(`Response not Ok (fetchAndCacheOnce): request for ${req.url} returned response ${res.status} ${res.statusText}`); + } + try { + const cache = await this.cache; + await cache.put(req, res.clone()); + if (!this.hashes.has(this.adapter.normalizeUrl(req.url))) { + const meta = { ts: this.adapter.time, used }; + const metaTable = await this.metadata; + await metaTable.write(req.url, meta); + } + return res; + } catch (err) { + throw new SwCriticalError(`Failed to update the caches for request to '${req.url}' (fetchAndCacheOnce): ${errorToString(err)}`); + } + } finally { + this.inFlightRequests.delete(req.url); + } + } + async fetchFromNetwork(req, redirectLimit = 3) { + const res = await this.cacheBustedFetchFromNetwork(req); + if (res["redirected"] && !!res.url) { + if (redirectLimit === 0) { + throw new SwCriticalError(`Response hit redirect limit (fetchFromNetwork): request redirected too many times, next is ${res.url}`); + } + return this.fetchFromNetwork(this.newRequestWithMetadata(res.url, req), redirectLimit - 1); + } + return res; + } + async cacheBustedFetchFromNetwork(req) { + const url = this.adapter.normalizeUrl(req.url); + if (this.hashes.has(url)) { + const canonicalHash = this.hashes.get(url); + let response = await this.safeFetch(req); + let makeCacheBustedRequest = response.ok; + if (makeCacheBustedRequest) { + const fetchedHash = sha1Binary(await response.clone().arrayBuffer()); + makeCacheBustedRequest = fetchedHash !== canonicalHash; + } + if (makeCacheBustedRequest) { + const cacheBustReq = this.newRequestWithMetadata(this.cacheBust(req.url), req); + response = await this.safeFetch(cacheBustReq); + if (response.ok) { + const cacheBustedHash = sha1Binary(await response.clone().arrayBuffer()); + if (canonicalHash !== cacheBustedHash) { + throw new SwCriticalError(`Hash mismatch (cacheBustedFetchFromNetwork): ${req.url}: expected ${canonicalHash}, got ${cacheBustedHash} (after cache busting)`); + } + } + } + if (!response.ok && response.status === 404) { + throw new SwUnrecoverableStateError(`Failed to retrieve hashed resource from the server. (AssetGroup: ${this.config.name} | URL: ${url})`); + } + return response; + } else { + return this.safeFetch(req); + } + } + async maybeUpdate(updateFrom, req, cache) { + const url = this.adapter.normalizeUrl(req.url); + if (this.hashes.has(url)) { + const hash = this.hashes.get(url); + const res = await updateFrom.lookupResourceWithHash(url, hash); + if (res !== null) { + await cache.put(req, res); + return true; + } + } + return false; + } + newRequestWithMetadata(url, options) { + return this.adapter.newRequest(url, { headers: options.headers }); + } + cacheBust(url) { + return url + (url.indexOf("?") === -1 ? "?" : "&") + "ngsw-cache-bust=" + Math.random(); + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } catch (e) { + return this.adapter.newResponse("", { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + }; + var PrefetchAssetGroup = class extends AssetGroup { + async initializeFully(updateFrom) { + const cache = await this.cache; + await this.urls.reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + let alreadyCached = false; + try { + alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match in a PrefetchAssetGroup: ${error}`); + } + if (alreadyCached) { + return; + } + if (updateFrom !== void 0 && await this.maybeUpdate(updateFrom, req, cache)) { + return; + } + await this.fetchAndCacheOnce(req, false); + }, Promise.resolve()); + if (updateFrom !== void 0) { + const metaTable = await this.metadata; + await (await updateFrom.previouslyCachedResources()).filter((url) => this.urls.indexOf(url) !== -1 || this.patterns.some((pattern) => pattern.test(url))).reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + const alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + if (alreadyCached) { + return; + } + const res = await updateFrom.lookupResourceWithoutHash(url); + if (res === null || res.metadata === void 0) { + return; + } + await cache.put(req, res.response); + await metaTable.write(req.url, __spreadProps(__spreadValues({}, res.metadata), { used: false })); + }, Promise.resolve()); + } + } + }; + var LazyAssetGroup = class extends AssetGroup { + async initializeFully(updateFrom) { + if (updateFrom === void 0) { + return; + } + const cache = await this.cache; + await this.urls.reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + let alreadyCached = false; + try { + alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match in a LazyAssetGroup: ${error}`); + } + if (alreadyCached) { + return; + } + const updated = await this.maybeUpdate(updateFrom, req, cache); + if (this.config.updateMode === "prefetch" && !updated) { + const cacheStatus = await updateFrom.recentCacheStatus(url); + if (cacheStatus !== UpdateCacheStatus.CACHED) { + return; + } + await this.fetchAndCacheOnce(req, false); + } + }, Promise.resolve()); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/data.mjs + var LruList = class { + constructor(state) { + if (state === void 0) { + state = { + head: null, + tail: null, + map: {}, + count: 0 + }; + } + this.state = state; + } + get size() { + return this.state.count; + } + pop() { + if (this.state.tail === null) { + return null; + } + const url = this.state.tail; + this.remove(url); + return url; + } + remove(url) { + const node = this.state.map[url]; + if (node === void 0) { + return false; + } + if (this.state.head === url) { + if (node.next === null) { + this.state.head = null; + this.state.tail = null; + this.state.map = {}; + this.state.count = 0; + return true; + } + const next = this.state.map[node.next]; + next.previous = null; + this.state.head = next.url; + node.next = null; + delete this.state.map[url]; + this.state.count--; + return true; + } + const previous = this.state.map[node.previous]; + previous.next = node.next; + if (node.next !== null) { + this.state.map[node.next].previous = node.previous; + } else { + this.state.tail = node.previous; + } + node.next = null; + node.previous = null; + delete this.state.map[url]; + this.state.count--; + return true; + } + accessed(url) { + if (this.state.head === url) { + return; + } + const node = this.state.map[url] || { url, next: null, previous: null }; + if (this.state.map[url] !== void 0) { + this.remove(url); + } + if (this.state.head !== null) { + this.state.map[this.state.head].previous = url; + } + node.next = this.state.head; + this.state.head = url; + if (this.state.tail === null) { + this.state.tail = url; + } + this.state.map[url] = node; + this.state.count++; + } + }; + var DataGroup = class { + constructor(scope2, adapter2, config, db, debugHandler, cacheNamePrefix) { + this.scope = scope2; + this.adapter = adapter2; + this.config = config; + this.db = db; + this.debugHandler = debugHandler; + this._lru = null; + this.patterns = config.patterns.map((pattern) => new RegExp(pattern)); + this.cache = adapter2.caches.open(`${cacheNamePrefix}:${config.name}:cache`); + this.lruTable = this.db.open(`${cacheNamePrefix}:${config.name}:lru`, config.cacheQueryOptions); + this.ageTable = this.db.open(`${cacheNamePrefix}:${config.name}:age`, config.cacheQueryOptions); + } + async lru() { + if (this._lru === null) { + const table = await this.lruTable; + try { + this._lru = new LruList(await table.read("lru")); + } catch (e) { + this._lru = new LruList(); + } + } + return this._lru; + } + async syncLru() { + if (this._lru === null) { + return; + } + const table = await this.lruTable; + try { + return table.write("lru", this._lru.state); + } catch (err) { + this.debugHandler.log(err, `DataGroup(${this.config.name}@${this.config.version}).syncLru()`); + } + } + async handleFetch(req, event) { + if (!this.patterns.some((pattern) => pattern.test(req.url))) { + return null; + } + const lru = await this.lru(); + switch (req.method) { + case "OPTIONS": + return null; + case "GET": + case "HEAD": + switch (this.config.strategy) { + case "freshness": + return this.handleFetchWithFreshness(req, event, lru); + case "performance": + return this.handleFetchWithPerformance(req, event, lru); + default: + throw new Error(`Unknown strategy: ${this.config.strategy}`); + } + default: + const wasCached = lru.remove(req.url); + if (wasCached) { + await this.clearCacheForUrl(req.url); + } + await this.syncLru(); + return this.safeFetch(req); + } + } + async handleFetchWithPerformance(req, event, lru) { + var _a; + const okToCacheOpaque = (_a = this.config.cacheOpaqueResponses) != null ? _a : false; + let res = null; + const fromCache = await this.loadFromCache(req, lru); + if (fromCache !== null) { + res = fromCache.res; + if (this.config.refreshAheadMs !== void 0 && fromCache.age >= this.config.refreshAheadMs) { + event.waitUntil(this.safeCacheResponse(req, this.safeFetch(req), lru, okToCacheOpaque)); + } + } + if (res !== null) { + return res; + } + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + res = await timeoutFetch; + if (res === void 0) { + res = this.adapter.newResponse(null, { status: 504, statusText: "Gateway Timeout" }); + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru, okToCacheOpaque)); + } else { + await this.safeCacheResponse(req, res, lru, okToCacheOpaque); + } + return res; + } + async handleFetchWithFreshness(req, event, lru) { + var _a; + const okToCacheOpaque = (_a = this.config.cacheOpaqueResponses) != null ? _a : true; + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + let res; + try { + res = await timeoutFetch; + } catch (e) { + res = void 0; + } + if (res === void 0) { + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru, okToCacheOpaque)); + const fromCache = await this.loadFromCache(req, lru); + res = fromCache !== null ? fromCache.res : null; + } else { + await this.safeCacheResponse(req, res, lru, okToCacheOpaque); + } + if (res !== null) { + return res; + } + return networkFetch; + } + networkFetchWithTimeout(req) { + if (this.config.timeoutMs !== void 0) { + const networkFetch = this.scope.fetch(req); + const safeNetworkFetch = (async () => { + try { + return await networkFetch; + } catch (e) { + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + })(); + const networkFetchUndefinedError = (async () => { + try { + return await networkFetch; + } catch (e) { + return void 0; + } + })(); + const timeout = this.adapter.timeout(this.config.timeoutMs); + return [Promise.race([networkFetchUndefinedError, timeout]), safeNetworkFetch]; + } else { + const networkFetch = this.safeFetch(req); + return [networkFetch, networkFetch]; + } + } + async safeCacheResponse(req, resOrPromise, lru, okToCacheOpaque) { + try { + const res = await resOrPromise; + try { + await this.cacheResponse(req, res, lru, okToCacheOpaque); + } catch (err) { + this.debugHandler.log(err, `DataGroup(${this.config.name}@${this.config.version}).safeCacheResponse(${req.url}, status: ${res.status})`); + } + } catch (e) { + } + } + async loadFromCache(req, lru) { + const cache = await this.cache; + let res = await cache.match(req, this.config.cacheQueryOptions); + if (res !== void 0) { + try { + const ageTable = await this.ageTable; + const age = this.adapter.time - (await ageTable.read(req.url)).age; + if (age <= this.config.maxAge) { + lru.accessed(req.url); + return { res, age }; + } + } catch (e) { + } + lru.remove(req.url); + await this.clearCacheForUrl(req.url); + await this.syncLru(); + } + return null; + } + async cacheResponse(req, res, lru, okToCacheOpaque = false) { + if (!(res.ok || okToCacheOpaque && res.type === "opaque")) { + return; + } + if (lru.size >= this.config.maxSize) { + const evictedUrl = lru.pop(); + if (evictedUrl !== null) { + await this.clearCacheForUrl(evictedUrl); + } + } + lru.accessed(req.url); + await (await this.cache).put(req, res.clone()); + const ageTable = await this.ageTable; + await ageTable.write(req.url, { age: this.adapter.time }); + await this.syncLru(); + } + async cleanup() { + await Promise.all([ + this.cache.then((cache) => this.adapter.caches.delete(cache.name)), + this.ageTable.then((table) => this.db.delete(table.name)), + this.lruTable.then((table) => this.db.delete(table.name)) + ]); + } + async getCacheNames() { + const [cache, ageTable, lruTable] = await Promise.all([ + this.cache, + this.ageTable, + this.lruTable + ]); + return [cache.name, ageTable.cacheName, lruTable.cacheName]; + } + async clearCacheForUrl(url) { + const [cache, ageTable] = await Promise.all([this.cache, this.ageTable]); + await Promise.all([ + cache.delete(this.adapter.newRequest(url, { method: "GET" }), this.config.cacheQueryOptions), + cache.delete(this.adapter.newRequest(url, { method: "HEAD" }), this.config.cacheQueryOptions), + ageTable.delete(url) + ]); + } + async safeFetch(req) { + try { + return this.scope.fetch(req); + } catch (e) { + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/app-version.mjs + var BACKWARDS_COMPATIBILITY_NAVIGATION_URLS = [ + { positive: true, regex: "^/.*$" }, + { positive: false, regex: "^/.*\\.[^/]*$" }, + { positive: false, regex: "^/.*__" } + ]; + var AppVersion = class { + get okay() { + return this._okay; + } + constructor(scope2, adapter2, database, idle, debugHandler, manifest, manifestHash) { + this.scope = scope2; + this.adapter = adapter2; + this.database = database; + this.debugHandler = debugHandler; + this.manifest = manifest; + this.manifestHash = manifestHash; + this.hashTable = /* @__PURE__ */ new Map(); + this._okay = true; + this.indexUrl = this.adapter.normalizeUrl(this.manifest.index); + Object.keys(manifest.hashTable).forEach((url) => { + this.hashTable.set(adapter2.normalizeUrl(url), manifest.hashTable[url]); + }); + const assetCacheNamePrefix = `${manifestHash}:assets`; + this.assetGroups = (manifest.assetGroups || []).map((config) => { + switch (config.installMode) { + case "prefetch": + return new PrefetchAssetGroup(scope2, adapter2, idle, config, this.hashTable, database, assetCacheNamePrefix); + case "lazy": + return new LazyAssetGroup(scope2, adapter2, idle, config, this.hashTable, database, assetCacheNamePrefix); + } + }); + this.dataGroups = (manifest.dataGroups || []).map((config) => new DataGroup(scope2, adapter2, config, database, debugHandler, `${config.version}:data`)); + manifest.navigationUrls = manifest.navigationUrls || BACKWARDS_COMPATIBILITY_NAVIGATION_URLS; + const includeUrls = manifest.navigationUrls.filter((spec) => spec.positive); + const excludeUrls = manifest.navigationUrls.filter((spec) => !spec.positive); + this.navigationUrls = { + include: includeUrls.map((spec) => new RegExp(spec.regex)), + exclude: excludeUrls.map((spec) => new RegExp(spec.regex)) + }; + } + async initializeFully(updateFrom) { + try { + await this.assetGroups.reduce(async (previous, group) => { + await previous; + return group.initializeFully(updateFrom); + }, Promise.resolve()); + } catch (err) { + this._okay = false; + throw err; + } + } + async handleFetch(req, event) { + const asset = await this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, event); + }, Promise.resolve(null)); + if (asset !== null) { + return asset; + } + const data = await this.dataGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, event); + }, Promise.resolve(null)); + if (data !== null) { + return data; + } + if (this.adapter.normalizeUrl(req.url) !== this.indexUrl && this.isNavigationRequest(req)) { + if (this.manifest.navigationRequestStrategy === "freshness") { + try { + return await this.scope.fetch(req); + } catch (e) { + } + } + return this.handleFetch(this.adapter.newRequest(this.indexUrl), event); + } + return null; + } + isNavigationRequest(req) { + if (req.method !== "GET" || req.mode !== "navigate") { + return false; + } + if (!this.acceptsTextHtml(req)) { + return false; + } + const urlPrefix = this.scope.registration.scope.replace(/\/$/, ""); + const url = req.url.startsWith(urlPrefix) ? req.url.slice(urlPrefix.length) : req.url; + const urlWithoutQueryOrHash = url.replace(/[?#].*$/, ""); + return this.navigationUrls.include.some((regex) => regex.test(urlWithoutQueryOrHash)) && !this.navigationUrls.exclude.some((regex) => regex.test(urlWithoutQueryOrHash)); + } + async lookupResourceWithHash(url, hash) { + if (!this.hashTable.has(url)) { + return null; + } + if (this.hashTable.get(url) !== hash) { + return null; + } + const cacheState = await this.lookupResourceWithoutHash(url); + return cacheState && cacheState.response; + } + lookupResourceWithoutHash(url) { + return this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.fetchFromCacheOnly(url); + }, Promise.resolve(null)); + } + previouslyCachedResources() { + return this.assetGroups.reduce(async (resources, group) => (await resources).concat(await group.unhashedResources()), Promise.resolve([])); + } + async recentCacheStatus(url) { + return this.assetGroups.reduce(async (current, group) => { + const status = await current; + if (status === UpdateCacheStatus.CACHED) { + return status; + } + const groupStatus = await group.cacheStatus(url); + if (groupStatus === UpdateCacheStatus.NOT_CACHED) { + return status; + } + return groupStatus; + }, Promise.resolve(UpdateCacheStatus.NOT_CACHED)); + } + async getCacheNames() { + const allGroupCacheNames = await Promise.all([ + ...this.assetGroups.map((group) => group.getCacheNames()), + ...this.dataGroups.map((group) => group.getCacheNames()) + ]); + return [].concat(...allGroupCacheNames); + } + get appData() { + return this.manifest.appData || null; + } + acceptsTextHtml(req) { + const accept = req.headers.get("Accept"); + if (accept === null) { + return false; + } + const values = accept.split(","); + return values.some((value) => value.trim().toLowerCase() === "text/html"); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/debug.mjs + var SW_VERSION = "18.0.2"; + var DEBUG_LOG_BUFFER_SIZE = 100; + var DebugHandler = class { + constructor(driver, adapter2) { + this.driver = driver; + this.adapter = adapter2; + this.debugLogA = []; + this.debugLogB = []; + } + async handleFetch(req) { + const [state, versions, idle] = await Promise.all([ + this.driver.debugState(), + this.driver.debugVersions(), + this.driver.debugIdleState() + ]); + const msgState = `NGSW Debug Info: + +Driver version: ${SW_VERSION} +Driver state: ${state.state} (${state.why}) +Latest manifest hash: ${state.latestHash || "none"} +Last update check: ${this.since(state.lastUpdateCheck)}`; + const msgVersions = versions.map((version) => `=== Version ${version.hash} === + +Clients: ${version.clients.join(", ")}`).join("\n\n"); + const msgIdle = `=== Idle Task Queue === +Last update tick: ${this.since(idle.lastTrigger)} +Last update run: ${this.since(idle.lastRun)} +Task queue: +${idle.queue.map((v) => " * " + v).join("\n")} + +Debug log: +${this.formatDebugLog(this.debugLogB)} +${this.formatDebugLog(this.debugLogA)} +`; + return this.adapter.newResponse(`${msgState} + +${msgVersions} + +${msgIdle}`, { headers: this.adapter.newHeaders({ "Content-Type": "text/plain" }) }); + } + since(time) { + if (time === null) { + return "never"; + } + let age = this.adapter.time - time; + const days = Math.floor(age / 864e5); + age = age % 864e5; + const hours = Math.floor(age / 36e5); + age = age % 36e5; + const minutes = Math.floor(age / 6e4); + age = age % 6e4; + const seconds = Math.floor(age / 1e3); + const millis = age % 1e3; + return (days > 0 ? `${days}d` : "") + (hours > 0 ? `${hours}h` : "") + (minutes > 0 ? `${minutes}m` : "") + (seconds > 0 ? `${seconds}s` : "") + (millis > 0 ? `${millis}u` : ""); + } + log(value, context = "") { + if (this.debugLogA.length === DEBUG_LOG_BUFFER_SIZE) { + this.debugLogB = this.debugLogA; + this.debugLogA = []; + } + if (typeof value !== "string") { + value = this.errorToString(value); + } + this.debugLogA.push({ value, time: this.adapter.time, context }); + } + errorToString(err) { + return `${err.name}(${err.message}, ${err.stack})`; + } + formatDebugLog(log) { + return log.map((entry) => `[${this.since(entry.time)}] ${entry.value} ${entry.context}`).join("\n"); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/idle.mjs + var IdleScheduler = class { + constructor(adapter2, delay, maxDelay, debug) { + this.adapter = adapter2; + this.delay = delay; + this.maxDelay = maxDelay; + this.debug = debug; + this.queue = []; + this.scheduled = null; + this.empty = Promise.resolve(); + this.emptyResolve = null; + this.lastTrigger = null; + this.lastRun = null; + this.oldestScheduledAt = null; + } + async trigger() { + var _a; + this.lastTrigger = this.adapter.time; + if (this.queue.length === 0) { + return; + } + if (this.scheduled !== null) { + this.scheduled.cancel = true; + } + const scheduled = { + cancel: false + }; + this.scheduled = scheduled; + const now = this.adapter.time; + const maxDelay = Math.max(0, ((_a = this.oldestScheduledAt) != null ? _a : now) + this.maxDelay - now); + const delay = Math.min(maxDelay, this.delay); + await this.adapter.timeout(delay); + if (scheduled.cancel) { + return; + } + this.scheduled = null; + await this.execute(); + } + async execute() { + this.lastRun = this.adapter.time; + while (this.queue.length > 0) { + const queue = this.queue; + this.queue = []; + await queue.reduce(async (previous, task) => { + await previous; + try { + await task.run(); + } catch (err) { + this.debug.log(err, `while running idle task ${task.desc}`); + } + }, Promise.resolve()); + } + if (this.emptyResolve !== null) { + this.emptyResolve(); + this.emptyResolve = null; + } + this.empty = Promise.resolve(); + this.oldestScheduledAt = null; + } + schedule(desc, run) { + this.queue.push({ desc, run }); + if (this.emptyResolve === null) { + this.empty = new Promise((resolve) => { + this.emptyResolve = resolve; + }); + } + if (this.oldestScheduledAt === null) { + this.oldestScheduledAt = this.adapter.time; + } + } + get size() { + return this.queue.length; + } + get taskDescriptions() { + return this.queue.map((task) => task.desc); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/manifest.mjs + function hashManifest(manifest) { + return sha1(JSON.stringify(manifest)); + } + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/msg.mjs + function isMsgCheckForUpdates(msg) { + return msg.action === "CHECK_FOR_UPDATES"; + } + function isMsgActivateUpdate(msg) { + return msg.action === "ACTIVATE_UPDATE"; + } + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/driver.mjs + var IDLE_DELAY = 5e3; + var MAX_IDLE_DELAY = 3e4; + var SUPPORTED_CONFIG_VERSION = 1; + var NOTIFICATION_OPTION_NAMES = [ + "actions", + "badge", + "body", + "data", + "dir", + "icon", + "image", + "lang", + "renotify", + "requireInteraction", + "silent", + "tag", + "timestamp", + "title", + "vibrate" + ]; + var DriverReadyState; + (function(DriverReadyState2) { + DriverReadyState2[DriverReadyState2["NORMAL"] = 0] = "NORMAL"; + DriverReadyState2[DriverReadyState2["EXISTING_CLIENTS_ONLY"] = 1] = "EXISTING_CLIENTS_ONLY"; + DriverReadyState2[DriverReadyState2["SAFE_MODE"] = 2] = "SAFE_MODE"; + })(DriverReadyState || (DriverReadyState = {})); + var Driver = class { + constructor(scope2, adapter2, db) { + this.scope = scope2; + this.adapter = adapter2; + this.db = db; + this.state = DriverReadyState.NORMAL; + this.stateMessage = "(nominal)"; + this.initialized = null; + this.clientVersionMap = /* @__PURE__ */ new Map(); + this.versions = /* @__PURE__ */ new Map(); + this.latestHash = null; + this.lastUpdateCheck = null; + this.scheduledNavUpdateCheck = false; + this.loggedInvalidOnlyIfCachedRequest = false; + this.controlTable = this.db.open("control"); + this.ngswStatePath = this.adapter.parseUrl("ngsw/state", this.scope.registration.scope).path; + this.scope.addEventListener("install", (event) => { + event.waitUntil(this.scope.skipWaiting()); + }); + this.scope.addEventListener("activate", (event) => { + event.waitUntil((async () => { + await this.scope.clients.claim(); + this.idle.schedule("activate: cleanup-old-sw-caches", async () => { + try { + await this.cleanupOldSwCaches(); + } catch (err) { + this.debugger.log(err, "cleanupOldSwCaches @ activate: cleanup-old-sw-caches"); + } + }); + })()); + if (this.scope.registration.active !== null) { + this.scope.registration.active.postMessage({ action: "INITIALIZE" }); + } + }); + this.scope.addEventListener("fetch", (event) => this.onFetch(event)); + this.scope.addEventListener("message", (event) => this.onMessage(event)); + this.scope.addEventListener("push", (event) => this.onPush(event)); + this.scope.addEventListener("notificationclick", (event) => this.onClick(event)); + this.debugger = new DebugHandler(this, this.adapter); + this.idle = new IdleScheduler(this.adapter, IDLE_DELAY, MAX_IDLE_DELAY, this.debugger); + } + onFetch(event) { + const req = event.request; + const scopeUrl = this.scope.registration.scope; + const requestUrlObj = this.adapter.parseUrl(req.url, scopeUrl); + if (req.headers.has("ngsw-bypass") || /[?&]ngsw-bypass(?:[=&]|$)/i.test(requestUrlObj.search)) { + return; + } + if (requestUrlObj.path === this.ngswStatePath) { + event.respondWith(this.debugger.handleFetch(req)); + return; + } + if (this.state === DriverReadyState.SAFE_MODE) { + event.waitUntil(this.idle.trigger()); + return; + } + if (requestUrlObj.origin.startsWith("http:") && scopeUrl.startsWith("https:")) { + this.debugger.log(`Ignoring passive mixed content request: Driver.fetch(${req.url})`); + return; + } + if (req.cache === "only-if-cached" && req.mode !== "same-origin") { + if (!this.loggedInvalidOnlyIfCachedRequest) { + this.loggedInvalidOnlyIfCachedRequest = true; + this.debugger.log(`Ignoring invalid request: 'only-if-cached' can be set only with 'same-origin' mode`, `Driver.fetch(${req.url}, cache: ${req.cache}, mode: ${req.mode})`); + } + return; + } + event.respondWith(this.handleFetch(event)); + } + onMessage(event) { + if (this.state === DriverReadyState.SAFE_MODE) { + return; + } + const data = event.data; + if (!data || !data.action) { + return; + } + event.waitUntil((async () => { + if (data.action === "INITIALIZE") { + return this.ensureInitialized(event); + } + if (!this.adapter.isClient(event.source)) { + return; + } + await this.ensureInitialized(event); + await this.handleMessage(data, event.source); + })()); + } + onPush(msg) { + if (!msg.data) { + return; + } + msg.waitUntil(this.handlePush(msg.data.json())); + } + onClick(event) { + event.waitUntil(this.handleClick(event.notification, event.action)); + } + async ensureInitialized(event) { + if (this.initialized !== null) { + return this.initialized; + } + try { + this.initialized = this.initialize(); + await this.initialized; + } catch (error) { + this.state = DriverReadyState.SAFE_MODE; + this.stateMessage = `Initialization failed due to error: ${errorToString(error)}`; + throw error; + } finally { + event.waitUntil(this.idle.trigger()); + } + } + async handleMessage(msg, from) { + if (isMsgCheckForUpdates(msg)) { + const action = this.checkForUpdate(); + await this.completeOperation(from, action, msg.nonce); + } else if (isMsgActivateUpdate(msg)) { + const action = this.updateClient(from); + await this.completeOperation(from, action, msg.nonce); + } + } + async handlePush(data) { + await this.broadcast({ + type: "PUSH", + data + }); + if (!data.notification || !data.notification.title) { + return; + } + const desc = data.notification; + let options = {}; + NOTIFICATION_OPTION_NAMES.filter((name) => desc.hasOwnProperty(name)).forEach((name) => options[name] = desc[name]); + await this.scope.registration.showNotification(desc["title"], options); + } + async handleClick(notification, action) { + var _a, _b, _c; + notification.close(); + const options = {}; + NOTIFICATION_OPTION_NAMES.filter((name) => name in notification).forEach((name) => options[name] = notification[name]); + const notificationAction = action === "" || action === void 0 ? "default" : action; + const onActionClick = (_b = (_a = notification == null ? void 0 : notification.data) == null ? void 0 : _a.onActionClick) == null ? void 0 : _b[notificationAction]; + const urlToOpen = new URL((_c = onActionClick == null ? void 0 : onActionClick.url) != null ? _c : "", this.scope.registration.scope).href; + switch (onActionClick == null ? void 0 : onActionClick.operation) { + case "openWindow": + await this.scope.clients.openWindow(urlToOpen); + break; + case "focusLastFocusedOrOpen": { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + await (matchingClient == null ? void 0 : matchingClient.focus()); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + case "navigateLastFocusedOrOpen": { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + matchingClient = await matchingClient.navigate(urlToOpen); + await (matchingClient == null ? void 0 : matchingClient.focus()); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + case "sendRequest": { + await this.scope.fetch(urlToOpen); + break; + } + default: + break; + } + await this.broadcast({ + type: "NOTIFICATION_CLICK", + data: { action, notification: options } + }); + } + async getLastFocusedMatchingClient(scope2) { + const windowClients = await scope2.clients.matchAll({ type: "window" }); + return windowClients[0]; + } + async completeOperation(client, promise, nonce) { + const response = { type: "OPERATION_COMPLETED", nonce }; + try { + client.postMessage(__spreadProps(__spreadValues({}, response), { + result: await promise + })); + } catch (e) { + client.postMessage(__spreadProps(__spreadValues({}, response), { + error: e.toString() + })); + } + } + async updateClient(client) { + const existing = this.clientVersionMap.get(client.id); + if (existing === this.latestHash) { + return false; + } + let previous = void 0; + if (existing !== void 0) { + const existingVersion = this.versions.get(existing); + previous = this.mergeHashWithAppData(existingVersion.manifest, existing); + } + this.clientVersionMap.set(client.id, this.latestHash); + await this.sync(); + const current = this.versions.get(this.latestHash); + return true; + } + async handleFetch(event) { + try { + await this.ensureInitialized(event); + } catch (e) { + return this.safeFetch(event.request); + } + if (event.request.mode === "navigate" && !this.scheduledNavUpdateCheck) { + this.scheduledNavUpdateCheck = true; + this.idle.schedule("check-updates-on-navigation", async () => { + this.scheduledNavUpdateCheck = false; + await this.checkForUpdate(); + }); + } + const appVersion = await this.assignVersion(event); + let res = null; + try { + if (appVersion !== null) { + try { + res = await appVersion.handleFetch(event.request, event); + } catch (err) { + if (err.isUnrecoverableState) { + await this.notifyClientsAboutUnrecoverableState(appVersion, err.message); + } + if (err.isCritical) { + this.debugger.log(err, `Driver.handleFetch(version: ${appVersion.manifestHash})`); + await this.versionFailed(appVersion, err); + return this.safeFetch(event.request); + } + throw err; + } + } + if (res === null) { + return this.safeFetch(event.request); + } + return res; + } finally { + event.waitUntil(this.idle.trigger()); + } + } + async initialize() { + const table = await this.controlTable; + let manifests, assignments, latest; + try { + [manifests, assignments, latest] = await Promise.all([ + table.read("manifests"), + table.read("assignments"), + table.read("latest") + ]); + if (!this.versions.has(latest.latest) && !manifests.hasOwnProperty(latest.latest)) { + this.debugger.log(`Missing manifest for latest version hash ${latest.latest}`, "initialize: read from DB"); + throw new Error(`Missing manifest for latest hash ${latest.latest}`); + } + this.idle.schedule("init post-load (update)", async () => { + await this.checkForUpdate(); + }); + } catch (_) { + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + manifests = { [hash]: manifest }; + assignments = {}; + latest = { latest: hash }; + await Promise.all([ + table.write("manifests", manifests), + table.write("assignments", assignments), + table.write("latest", latest) + ]); + } + this.idle.schedule("init post-load (cleanup)", async () => { + await this.cleanupCaches(); + }); + Object.keys(manifests).forEach((hash) => { + const manifest = manifests[hash]; + if (!this.versions.has(hash)) { + this.versions.set(hash, new AppVersion(this.scope, this.adapter, this.db, this.idle, this.debugger, manifest, hash)); + } + }); + Object.keys(assignments).forEach((clientId) => { + const hash = assignments[clientId]; + if (this.versions.has(hash)) { + this.clientVersionMap.set(clientId, hash); + } else { + this.clientVersionMap.set(clientId, latest.latest); + this.debugger.log(`Unknown version ${hash} mapped for client ${clientId}, using latest instead`, `initialize: map assignments`); + } + }); + this.latestHash = latest.latest; + if (!this.versions.has(latest.latest)) { + throw new Error(`Invariant violated (initialize): latest hash ${latest.latest} has no known manifest`); + } + await Promise.all(Object.keys(manifests).map(async (hash) => { + try { + await this.scheduleInitialization(this.versions.get(hash)); + } catch (err) { + this.debugger.log(err, `initialize: schedule init of ${hash}`); + } + })); + } + lookupVersionByHash(hash, debugName = "lookupVersionByHash") { + if (!this.versions.has(hash)) { + throw new Error(`Invariant violated (${debugName}): want AppVersion for ${hash} but not loaded`); + } + return this.versions.get(hash); + } + async assignVersion(event) { + const clientId = event.resultingClientId || event.clientId; + if (clientId) { + if (this.clientVersionMap.has(clientId)) { + const hash = this.clientVersionMap.get(clientId); + let appVersion = this.lookupVersionByHash(hash, "assignVersion"); + if (this.state === DriverReadyState.NORMAL && hash !== this.latestHash && appVersion.isNavigationRequest(event.request)) { + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + const client = await this.scope.clients.get(clientId); + if (client) { + await this.updateClient(client); + } + appVersion = this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + return appVersion; + } else { + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + this.clientVersionMap.set(clientId, this.latestHash); + await this.sync(); + return this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + } else { + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + return this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + } + async fetchLatestManifest(ignoreOfflineError = false) { + const res = await this.safeFetch(this.adapter.newRequest("ngsw.json?ngsw-cache-bust=" + Math.random())); + if (!res.ok) { + if (res.status === 404) { + await this.deleteAllCaches(); + await this.scope.registration.unregister(); + } else if ((res.status === 503 || res.status === 504) && ignoreOfflineError) { + return null; + } + throw new Error(`Manifest fetch failed! (status: ${res.status})`); + } + this.lastUpdateCheck = this.adapter.time; + return res.json(); + } + async deleteAllCaches() { + const cacheNames = await this.adapter.caches.keys(); + await Promise.all(cacheNames.map((name) => this.adapter.caches.delete(name))); + } + async scheduleInitialization(appVersion) { + const initialize = async () => { + try { + await appVersion.initializeFully(); + } catch (err) { + this.debugger.log(err, `initializeFully for ${appVersion.manifestHash}`); + await this.versionFailed(appVersion, err); + } + }; + if (this.scope.registration.scope.indexOf("://localhost") > -1) { + return initialize(); + } + this.idle.schedule(`initialization(${appVersion.manifestHash})`, initialize); + } + async versionFailed(appVersion, err) { + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === void 0) { + return; + } + const brokenHash = broken[0]; + if (this.latestHash === brokenHash) { + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to: ${errorToString(err)}`; + } + } + async setupUpdate(manifest, hash) { + try { + const newVersion = new AppVersion(this.scope, this.adapter, this.db, this.idle, this.debugger, manifest, hash); + if (manifest.configVersion !== SUPPORTED_CONFIG_VERSION) { + await this.deleteAllCaches(); + await this.scope.registration.unregister(); + throw new Error(`Invalid config version: expected ${SUPPORTED_CONFIG_VERSION}, got ${manifest.configVersion}.`); + } + await newVersion.initializeFully(this); + this.versions.set(hash, newVersion); + this.latestHash = hash; + if (this.state === DriverReadyState.EXISTING_CLIENTS_ONLY) { + this.state = DriverReadyState.NORMAL; + this.stateMessage = "(nominal)"; + } + await this.sync(); + await this.notifyClientsAboutVersionReady(manifest, hash); + } catch (e) { + await this.notifyClientsAboutVersionInstallationFailed(manifest, hash, e); + throw e; + } + } + async checkForUpdate() { + let hash = "(unknown)"; + try { + const manifest = await this.fetchLatestManifest(true); + if (manifest === null) { + this.debugger.log("Check for update aborted. (Client or server offline.)"); + return false; + } + hash = hashManifest(manifest); + if (this.versions.has(hash)) { + await this.notifyClientsAboutNoNewVersionDetected(manifest, hash); + return false; + } + await this.notifyClientsAboutVersionDetected(manifest, hash); + await this.setupUpdate(manifest, hash); + return true; + } catch (err) { + this.debugger.log(err, `Error occurred while updating to manifest ${hash}`); + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to failed initialization: ${errorToString(err)}`; + return false; + } + } + async sync() { + const table = await this.controlTable; + const manifests = {}; + this.versions.forEach((version, hash) => { + manifests[hash] = version.manifest; + }); + const assignments = {}; + this.clientVersionMap.forEach((hash, clientId) => { + assignments[clientId] = hash; + }); + const latest = { + latest: this.latestHash + }; + await Promise.all([ + table.write("manifests", manifests), + table.write("assignments", assignments), + table.write("latest", latest) + ]); + } + async cleanupCaches() { + try { + const activeClients = new Set((await this.scope.clients.matchAll()).map((client) => client.id)); + const knownClients = Array.from(this.clientVersionMap.keys()); + const obsoleteClients = knownClients.filter((id) => !activeClients.has(id)); + obsoleteClients.forEach((id) => this.clientVersionMap.delete(id)); + const usedVersions = new Set(this.clientVersionMap.values()); + const obsoleteVersions = Array.from(this.versions.keys()).filter((version) => !usedVersions.has(version) && version !== this.latestHash); + obsoleteVersions.forEach((version) => this.versions.delete(version)); + await this.sync(); + const allCaches = await this.adapter.caches.keys(); + const usedCaches = new Set(await this.getCacheNames()); + const cachesToDelete = allCaches.filter((name) => !usedCaches.has(name)); + await Promise.all(cachesToDelete.map((name) => this.adapter.caches.delete(name))); + } catch (err) { + this.debugger.log(err, "cleanupCaches"); + } + } + async cleanupOldSwCaches() { + const caches = this.adapter.caches.original; + const cacheNames = await caches.keys(); + const oldSwCacheNames = cacheNames.filter((name) => /^ngsw:(?!\/)/.test(name)); + await Promise.all(oldSwCacheNames.map((name) => caches.delete(name))); + } + lookupResourceWithHash(url, hash) { + return Array.from(this.versions.values()).reduce(async (prev, version) => { + if (await prev !== null) { + return prev; + } + return version.lookupResourceWithHash(url, hash); + }, Promise.resolve(null)); + } + async lookupResourceWithoutHash(url) { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version ? version.lookupResourceWithoutHash(url) : null; + } + async previouslyCachedResources() { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version ? version.previouslyCachedResources() : []; + } + async recentCacheStatus(url) { + const version = this.versions.get(this.latestHash); + return version ? version.recentCacheStatus(url) : UpdateCacheStatus.NOT_CACHED; + } + mergeHashWithAppData(manifest, hash) { + return { + hash, + appData: manifest.appData + }; + } + async notifyClientsAboutUnrecoverableState(appVersion, reason) { + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === void 0) { + return; + } + const brokenHash = broken[0]; + const affectedClients = Array.from(this.clientVersionMap.entries()).filter(([clientId, hash]) => hash === brokenHash).map(([clientId]) => clientId); + await Promise.all(affectedClients.map(async (clientId) => { + const client = await this.scope.clients.get(clientId); + if (client) { + client.postMessage({ type: "UNRECOVERABLE_STATE", reason }); + } + })); + } + async notifyClientsAboutVersionInstallationFailed(manifest, hash, error) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + client.postMessage({ + type: "VERSION_INSTALLATION_FAILED", + version: this.mergeHashWithAppData(manifest, hash), + error: errorToString(error) + }); + })); + } + async notifyClientsAboutNoNewVersionDetected(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + client.postMessage({ + type: "NO_NEW_VERSION_DETECTED", + version: this.mergeHashWithAppData(manifest, hash) + }); + })); + } + async notifyClientsAboutVersionDetected(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + const version = this.clientVersionMap.get(client.id); + if (version === void 0) { + return; + } + client.postMessage({ + type: "VERSION_DETECTED", + version: this.mergeHashWithAppData(manifest, hash) + }); + })); + } + async notifyClientsAboutVersionReady(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + const version = this.clientVersionMap.get(client.id); + if (version === void 0) { + return; + } + if (version === this.latestHash) { + return; + } + const current = this.versions.get(version); + const notice = { + type: "VERSION_READY", + currentVersion: this.mergeHashWithAppData(current.manifest, version), + latestVersion: this.mergeHashWithAppData(manifest, hash) + }; + client.postMessage(notice); + })); + } + async broadcast(msg) { + const clients = await this.scope.clients.matchAll(); + clients.forEach((client) => { + client.postMessage(msg); + }); + } + async debugState() { + return { + state: DriverReadyState[this.state], + why: this.stateMessage, + latestHash: this.latestHash, + lastUpdateCheck: this.lastUpdateCheck + }; + } + async debugVersions() { + return Array.from(this.versions.keys()).map((hash) => { + const version = this.versions.get(hash); + const clients = Array.from(this.clientVersionMap.entries()).filter(([clientId, version2]) => version2 === hash).map(([clientId, version2]) => clientId); + return { + hash, + manifest: version.manifest, + clients, + status: "" + }; + }); + } + async debugIdleState() { + return { + queue: this.idle.taskDescriptions, + lastTrigger: this.idle.lastTrigger, + lastRun: this.idle.lastRun + }; + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } catch (err) { + this.debugger.log(err, `Driver.fetch(${req.url})`); + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + async getCacheNames() { + const controlTable = await this.controlTable; + const appVersions = Array.from(this.versions.values()); + const appVersionCacheNames = await Promise.all(appVersions.map((version) => version.getCacheNames())); + return [controlTable.cacheName].concat(...appVersionCacheNames); + } + }; + + // bazel-out/k8-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/main.mjs + var scope = self; + var adapter = new Adapter(scope.registration.scope, self.caches); + new Driver(scope, adapter, new CacheDatabase(adapter)); +})(); +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ diff --git a/internal/middleware/front/dist/front/browser/ngsw.json b/internal/middleware/front/dist/front/browser/ngsw.json new file mode 100644 index 0000000..747e6c0 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/ngsw.json @@ -0,0 +1,79 @@ +{ + "configVersion": 1, + "timestamp": 1720682538867, + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "updateMode": "prefetch", + "cacheQueryOptions": { + "ignoreVary": true + }, + "urls": [ + "/favicon.ico", + "/index.html", + "/main-CLMZMBYY.js", + "/manifest.webmanifest", + "/polyfills-TMVK3KFA.js", + "/styles-NJ66DI6F.css" + ], + "patterns": [] + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "cacheQueryOptions": { + "ignoreVary": true + }, + "urls": [ + "/assets/icons/icon-128x128.png", + "/assets/icons/icon-144x144.png", + "/assets/icons/icon-152x152.png", + "/assets/icons/icon-192x192.png", + "/assets/icons/icon-384x384.png", + "/assets/icons/icon-512x512.png", + "/assets/icons/icon-72x72.png", + "/assets/icons/icon-96x96.png" + ], + "patterns": [] + } + ], + "dataGroups": [], + "hashTable": { + "/assets/icons/icon-128x128.png": "f912963bdc6d5a38d8f1dd0afbaab2ce8d657acb", + "/assets/icons/icon-144x144.png": "b155fd5f2fd5d2ea7760721063003c4cd95fd783", + "/assets/icons/icon-152x152.png": "eae6e0f0c8afb8aaae339e2a569b43e9238e5e6c", + "/assets/icons/icon-192x192.png": "15c4180454633880d98674aa7394656196c91584", + "/assets/icons/icon-384x384.png": "94a915751ef6c9282df9aea405ad679230631814", + "/assets/icons/icon-512x512.png": "1de182f76f7329dfa8f9fcdd1fdcdd695bea6a99", + "/assets/icons/icon-72x72.png": "aa88a6096bd973be7f6d7a5489bfa6bc2463f8c4", + "/assets/icons/icon-96x96.png": "7fb8f59c30ce2ff12c700321a0b39e14b3dc8f95", + "/favicon.ico": "9c39f434fe1261f68c5e3eefdf734630d99c5670", + "/index.html": "f5334c6295211e902dbebf00c2b0f2be6cb3c2f6", + "/main-CLMZMBYY.js": "35afe20a8438fd03626e7fb1cca7c1583d1a9fc8", + "/manifest.webmanifest": "4a17033d41b19f97cc660c6a603fdc95226d1704", + "/polyfills-TMVK3KFA.js": "fda1c82c5c620f1fa442f687b3df45a037f6fcc9", + "/styles-NJ66DI6F.css": "765db3018d28d3c08e15645f053b34af5946b7e5" + }, + "navigationUrls": [ + { + "positive": true, + "regex": "^\\/.*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*\\.[^/]*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$" + } + ], + "navigationRequestStrategy": "performance" +} \ No newline at end of file diff --git a/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js b/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js new file mode 100644 index 0000000..57d4c33 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js @@ -0,0 +1,2 @@ +(function(e){let n=e.performance;function c(L){n&&n.mark&&n.mark(L)}function r(L,t){n&&n.measure&&n.measure(L,t)}c("Zone");let a=e.__Zone_symbol_prefix||"__zone_symbol__";function l(L){return a+L}let y=e[l("forceDuplicateZoneCheck")]===!0;if(e.Zone){if(y||typeof e.Zone.__symbol__!="function")throw new Error("Zone already loaded.");return e.Zone}let oe=class oe{static assertZonePatched(){if(e.Promise!==re.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=oe.current;for(;t.parent;)t=t.parent;return t}static get current(){return U.zone}static get currentTask(){return te}static __load_patch(t,s,o=!1){if(re.hasOwnProperty(t)){if(!o&&y)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){let v="Zone:"+t;c(v),re[t]=s(e,oe,z),r(v,v)}}get parent(){return this._parent}get name(){return this._name}constructor(t,s){this._parent=t,this._name=s?s.name||"unnamed":"",this._properties=s&&s.properties||{},this._zoneDelegate=new k(this,this._parent&&this._parent._zoneDelegate,s)}get(t){let s=this.getZoneWith(t);if(s)return s._properties[t]}getZoneWith(t){let s=this;for(;s;){if(s._properties.hasOwnProperty(t))return s;s=s._parent}return null}fork(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)}wrap(t,s){if(typeof t!="function")throw new Error("Expecting function got: "+t);let o=this._zoneDelegate.intercept(this,t,s),v=this;return function(){return v.runGuarded(o,this,arguments,s)}}run(t,s,o,v){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,t,s,o,v)}finally{U=U.parent}}runGuarded(t,s=null,o,v){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,t,s,o,v)}catch(F){if(this._zoneDelegate.handleError(this,F))throw F}}finally{U=U.parent}}runTask(t,s,o){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||$).name+"; Execution: "+this.name+")");if(t.state===H&&(t.type===K||t.type===P))return;let v=t.state!=T;v&&t._transitionTo(T,M),t.runCount++;let F=te;te=t,U={parent:U,zone:this};try{t.type==P&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,s,o)}catch(u){if(this._zoneDelegate.handleError(this,u))throw u}}finally{t.state!==H&&t.state!==d&&(t.type==K||t.data&&t.data.isPeriodic?v&&t._transitionTo(M,T):(t.runCount=0,this._updateTaskCount(t,-1),v&&t._transitionTo(H,T,H))),U=U.parent,te=F}}scheduleTask(t){if(t.zone&&t.zone!==this){let o=this;for(;o;){if(o===t.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${t.zone.name}`);o=o.parent}}t._transitionTo(X,H);let s=[];t._zoneDelegates=s,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(o){throw t._transitionTo(d,X,H),this._zoneDelegate.handleError(this,o),o}return t._zoneDelegates===s&&this._updateTaskCount(t,1),t.state==X&&t._transitionTo(M,X),t}scheduleMicroTask(t,s,o,v){return this.scheduleTask(new m(N,t,s,o,v,void 0))}scheduleMacroTask(t,s,o,v,F){return this.scheduleTask(new m(P,t,s,o,v,F))}scheduleEventTask(t,s,o,v,F){return this.scheduleTask(new m(K,t,s,o,v,F))}cancelTask(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||$).name+"; Execution: "+this.name+")");if(!(t.state!==M&&t.state!==T)){t._transitionTo(x,M,T);try{this._zoneDelegate.cancelTask(this,t)}catch(s){throw t._transitionTo(d,x),this._zoneDelegate.handleError(this,s),s}return this._updateTaskCount(t,-1),t._transitionTo(H,x),t.runCount=0,t}}_updateTaskCount(t,s){let o=t._zoneDelegates;s==-1&&(t._zoneDelegates=null);for(let v=0;vL.hasTask(s,o),onScheduleTask:(L,t,s,o)=>L.scheduleTask(s,o),onInvokeTask:(L,t,s,o,v,F)=>L.invokeTask(s,o,v,F),onCancelTask:(L,t,s,o)=>L.cancelTask(s,o)};class k{constructor(t,s,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=t,this._parentDelegate=s,this._forkZS=o&&(o&&o.onFork?o:s._forkZS),this._forkDlgt=o&&(o.onFork?s:s._forkDlgt),this._forkCurrZone=o&&(o.onFork?this.zone:s._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:s._interceptZS),this._interceptDlgt=o&&(o.onIntercept?s:s._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this.zone:s._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:s._invokeZS),this._invokeDlgt=o&&(o.onInvoke?s:s._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this.zone:s._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:s._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?s:s._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this.zone:s._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:s._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?s:s._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this.zone:s._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:s._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?s:s._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this.zone:s._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:s._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?s:s._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this.zone:s._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let v=o&&o.onHasTask,F=s&&s._hasTaskZS;(v||F)&&(this._hasTaskZS=v?o:b,this._hasTaskDlgt=s,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=t,o.onScheduleTask||(this._scheduleTaskZS=b,this._scheduleTaskDlgt=s,this._scheduleTaskCurrZone=this.zone),o.onInvokeTask||(this._invokeTaskZS=b,this._invokeTaskDlgt=s,this._invokeTaskCurrZone=this.zone),o.onCancelTask||(this._cancelTaskZS=b,this._cancelTaskDlgt=s,this._cancelTaskCurrZone=this.zone))}fork(t,s){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,t,s):new _(t,s)}intercept(t,s,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,t,s,o):s}invoke(t,s,o,v,F){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,t,s,o,v,F):s.apply(o,v)}handleError(t,s){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,t,s):!0}scheduleTask(t,s){let o=s;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,t,s),o||(o=s);else if(s.scheduleFn)s.scheduleFn(s);else if(s.type==N)R(s);else throw new Error("Task is missing scheduleFn.");return o}invokeTask(t,s,o,v){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,t,s,o,v):s.callback.apply(o,v)}cancelTask(t,s){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,t,s);else{if(!s.cancelFn)throw Error("Task is not cancelable");o=s.cancelFn(s)}return o}hasTask(t,s){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,t,s)}catch(o){this.handleError(t,o)}}_updateTaskCount(t,s){let o=this._taskCounts,v=o[t],F=o[t]=v+s;if(F<0)throw new Error("More tasks executed then were scheduled.");if(v==0||F==0){let u={microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:t};this.hasTask(this.zone,u)}}}class m{constructor(t,s,o,v,F,u){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=t,this.source=s,this.data=v,this.scheduleFn=F,this.cancelFn=u,!o)throw new Error("callback is not defined");this.callback=o;let f=this;t===K&&v&&v.useG?this.invoke=m.invokeTask:this.invoke=function(){return m.invokeTask.call(e,f,this,arguments)}}static invokeTask(t,s,o){t||(t=this),Q++;try{return t.runCount++,t.zone.runTask(t,s,o)}finally{Q==1&&E(),Q--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(H,X)}_transitionTo(t,s,o){if(this._state===s||this._state===o)this._state=t,t==H&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${t}', expecting state '${s}'${o?" or '"+o+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let I=l("setTimeout"),Z=l("Promise"),O=l("then"),B=[],A=!1,J;function q(L){if(J||e[Z]&&(J=e[Z].resolve(0)),J){let t=J[O];t||(t=J.then),t.call(J,L)}else e[I](L,0)}function R(L){Q===0&&B.length===0&&q(E),L&&B.push(L)}function E(){if(!A){for(A=!0;B.length;){let L=B;B=[];for(let t=0;tU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!_[l("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q},U={parent:null,zone:new _(null,null)},te=null,Q=0;function W(){}return r("Zone","Zone"),e.Zone=_})(globalThis);var me=Object.getOwnPropertyDescriptor,Ne=Object.defineProperty,Ie=Object.getPrototypeOf,it=Object.create,ct=Array.prototype.slice,Me="addEventListener",Le="removeEventListener",Se=Zone.__symbol__(Me),De=Zone.__symbol__(Le),ie="true",ce="false",pe=Zone.__symbol__("");function Ae(e,n){return Zone.current.wrap(e,n)}function je(e,n,c,r,a){return Zone.current.scheduleMacroTask(e,n,c,r,a)}var j=Zone.__symbol__,Pe=typeof window<"u",Te=Pe?window:void 0,Y=Pe&&Te||globalThis,at="removeAttribute";function He(e,n){for(let c=e.length-1;c>=0;c--)typeof e[c]=="function"&&(e[c]=Ae(e[c],n+"_"+c));return e}function lt(e,n){let c=e.constructor.name;for(let r=0;r{let b=function(){return _.apply(this,He(arguments,c+"."+a))};return ae(b,_),b})(l)}}}function Ye(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var $e=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,we=!("nw"in Y)&&typeof Y.process<"u"&&{}.toString.call(Y.process)==="[object process]",xe=!we&&!$e&&!!(Pe&&Te.HTMLElement),Je=typeof Y.process<"u"&&{}.toString.call(Y.process)==="[object process]"&&!$e&&!!(Pe&&Te.HTMLElement),be={},We=function(e){if(e=e||Y.event,!e)return;let n=be[e.type];n||(n=be[e.type]=j("ON_PROPERTY"+e.type));let c=this||e.target||Y,r=c[n],a;if(xe&&c===Te&&e.type==="error"){let l=e;a=r&&r.call(this,l.message,l.filename,l.lineno,l.colno,l.error),a===!0&&e.preventDefault()}else a=r&&r.apply(this,arguments),a!=null&&!a&&e.preventDefault();return a};function qe(e,n,c){let r=me(e,n);if(!r&&c&&me(c,n)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let a=j("on"+n+"patched");if(e.hasOwnProperty(a)&&e[a])return;delete r.writable,delete r.value;let l=r.get,y=r.set,_=n.slice(2),b=be[_];b||(b=be[_]=j("ON_PROPERTY"+_)),r.set=function(k){let m=this;if(!m&&e===Y&&(m=Y),!m)return;typeof m[b]=="function"&&m.removeEventListener(_,We),y&&y.call(m,null),m[b]=k,typeof k=="function"&&m.addEventListener(_,We,!1)},r.get=function(){let k=this;if(!k&&e===Y&&(k=Y),!k)return null;let m=k[b];if(m)return m;if(l){let I=l.call(this);if(I)return r.set.call(this,I),typeof k[at]=="function"&&k.removeAttribute(n),I}return null},Ne(e,n,r),e[a]=!0}function Ke(e,n,c){if(n)for(let r=0;rfunction(y,_){let b=c(y,_);return b.cbIdx>=0&&typeof _[b.cbIdx]=="function"?je(b.name,_[b.cbIdx],b,a):l.apply(y,_)})}function ae(e,n){e[j("OriginalDelegate")]=n}var Xe=!1,Ze=!1;function ft(){try{let e=Te.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function ht(){if(Xe)return Ze;Xe=!0;try{let e=Te.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Ze=!0)}catch{}return Ze}Zone.__load_patch("ZoneAwarePromise",(e,n,c)=>{let r=Object.getOwnPropertyDescriptor,a=Object.defineProperty;function l(u){if(u&&u.toString===Object.prototype.toString){let f=u.constructor&&u.constructor.name;return(f||"")+": "+JSON.stringify(u)}return u?u.toString():Object.prototype.toString.call(u)}let y=c.symbol,_=[],b=e[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,k=y("Promise"),m=y("then"),I="__creationTrace__";c.onUnhandledError=u=>{if(c.showUncaughtError()){let f=u&&u.rejection;f?console.error("Unhandled Promise rejection:",f instanceof Error?f.message:f,"; Zone:",u.zone.name,"; Task:",u.task&&u.task.source,"; Value:",f,f instanceof Error?f.stack:void 0):console.error(u)}},c.microtaskDrainDone=()=>{for(;_.length;){let u=_.shift();try{u.zone.runGuarded(()=>{throw u.throwOriginal?u.rejection:u})}catch(f){O(f)}}};let Z=y("unhandledPromiseRejectionHandler");function O(u){c.onUnhandledError(u);try{let f=n[Z];typeof f=="function"&&f.call(this,u)}catch{}}function B(u){return u&&u.then}function A(u){return u}function J(u){return t.reject(u)}let q=y("state"),R=y("value"),E=y("finally"),$=y("parentPromiseValue"),H=y("parentPromiseState"),X="Promise.then",M=null,T=!0,x=!1,d=0;function N(u,f){return i=>{try{z(u,f,i)}catch(h){z(u,!1,h)}}}let P=function(){let u=!1;return function(i){return function(){u||(u=!0,i.apply(null,arguments))}}},K="Promise resolved with itself",re=y("currentTaskTrace");function z(u,f,i){let h=P();if(u===i)throw new TypeError(K);if(u[q]===M){let g=null;try{(typeof i=="object"||typeof i=="function")&&(g=i&&i.then)}catch(w){return h(()=>{z(u,!1,w)})(),u}if(f!==x&&i instanceof t&&i.hasOwnProperty(q)&&i.hasOwnProperty(R)&&i[q]!==M)te(i),z(u,i[q],i[R]);else if(f!==x&&typeof g=="function")try{g.call(i,h(N(u,f)),h(N(u,!1)))}catch(w){h(()=>{z(u,!1,w)})()}else{u[q]=f;let w=u[R];if(u[R]=i,u[E]===E&&f===T&&(u[q]=u[H],u[R]=u[$]),f===x&&i instanceof Error){let p=n.currentTask&&n.currentTask.data&&n.currentTask.data[I];p&&a(i,re,{configurable:!0,enumerable:!1,writable:!0,value:p})}for(let p=0;p{try{let C=u[R],S=!!i&&E===i[E];S&&(i[$]=C,i[H]=w);let D=f.run(p,void 0,S&&p!==J&&p!==A?[]:[C]);z(i,!0,D)}catch(C){z(i,!1,C)}},i)}let W="function ZoneAwarePromise() { [native code] }",oe=function(){},L=e.AggregateError;class t{static toString(){return W}static resolve(f){return z(new this(null),T,f)}static reject(f){return z(new this(null),x,f)}static any(f){if(!f||typeof f[Symbol.iterator]!="function")return Promise.reject(new L([],"All promises were rejected"));let i=[],h=0;try{for(let p of f)h++,i.push(t.resolve(p))}catch{return Promise.reject(new L([],"All promises were rejected"))}if(h===0)return Promise.reject(new L([],"All promises were rejected"));let g=!1,w=[];return new t((p,C)=>{for(let S=0;S{g||(g=!0,p(D))},D=>{w.push(D),h--,h===0&&(g=!0,C(new L(w,"All promises were rejected")))})})}static race(f){let i,h,g=new this((C,S)=>{i=C,h=S});function w(C){i(C)}function p(C){h(C)}for(let C of f)B(C)||(C=this.resolve(C)),C.then(w,p);return g}static all(f){return t.allWithCallback(f)}static allSettled(f){return(this&&this.prototype instanceof t?this:t).allWithCallback(f,{thenCallback:h=>({status:"fulfilled",value:h}),errorCallback:h=>({status:"rejected",reason:h})})}static allWithCallback(f,i){let h,g,w=new this((D,G)=>{h=D,g=G}),p=2,C=0,S=[];for(let D of f){B(D)||(D=this.resolve(D));let G=C;try{D.then(V=>{S[G]=i?i.thenCallback(V):V,p--,p===0&&h(S)},V=>{i?(S[G]=i.errorCallback(V),p--,p===0&&h(S)):g(V)})}catch(V){g(V)}p++,C++}return p-=2,p===0&&h(S),w}constructor(f){let i=this;if(!(i instanceof t))throw new Error("Must be an instanceof Promise.");i[q]=M,i[R]=[];try{let h=P();f&&f(h(N(i,T)),h(N(i,x)))}catch(h){z(i,!1,h)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return t}then(f,i){let h=this.constructor?.[Symbol.species];(!h||typeof h!="function")&&(h=this.constructor||t);let g=new h(oe),w=n.current;return this[q]==M?this[R].push(w,g,f,i):Q(this,w,g,f,i),g}catch(f){return this.then(null,f)}finally(f){let i=this.constructor?.[Symbol.species];(!i||typeof i!="function")&&(i=t);let h=new i(oe);h[E]=E;let g=n.current;return this[q]==M?this[R].push(g,h,f,f):Q(this,g,h,f,f),h}}t.resolve=t.resolve,t.reject=t.reject,t.race=t.race,t.all=t.all;let s=e[k]=e.Promise;e.Promise=t;let o=y("thenPatched");function v(u){let f=u.prototype,i=r(f,"then");if(i&&(i.writable===!1||!i.configurable))return;let h=f.then;f[m]=h,u.prototype.then=function(g,w){return new t((C,S)=>{h.call(this,C,S)}).then(g,w)},u[o]=!0}c.patchThen=v;function F(u){return function(f,i){let h=u.apply(f,i);if(h instanceof t)return h;let g=h.constructor;return g[o]||v(g),h}}return s&&(v(s),le(e,"fetch",u=>F(u))),Promise[n.__symbol__("uncaughtPromiseErrors")]=_,t});Zone.__load_patch("toString",e=>{let n=Function.prototype.toString,c=j("OriginalDelegate"),r=j("Promise"),a=j("Error"),l=function(){if(typeof this=="function"){let k=this[c];if(k)return typeof k=="function"?n.call(k):Object.prototype.toString.call(k);if(this===Promise){let m=e[r];if(m)return n.call(m)}if(this===Error){let m=e[a];if(m)return n.call(m)}}return n.call(this)};l[c]=n,Function.prototype.toString=l;let y=Object.prototype.toString,_="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?_:y.call(this)}});var _e=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){_e=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{_e=!1}var dt={useG:!0},ee={},Qe={},et=new RegExp("^"+pe+"(\\w+)(true|false)$"),tt=j("propagationStopped");function nt(e,n){let c=(n?n(e):e)+ce,r=(n?n(e):e)+ie,a=pe+c,l=pe+r;ee[e]={},ee[e][ce]=a,ee[e][ie]=l}function _t(e,n,c,r){let a=r&&r.add||Me,l=r&&r.rm||Le,y=r&&r.listeners||"eventListeners",_=r&&r.rmAll||"removeAllListeners",b=j(a),k="."+a+":",m="prependListener",I="."+m+":",Z=function(R,E,$){if(R.isRemoved)return;let H=R.callback;typeof H=="object"&&H.handleEvent&&(R.callback=T=>H.handleEvent(T),R.originalDelegate=H);let X;try{R.invoke(R,E,[$])}catch(T){X=T}let M=R.options;if(M&&typeof M=="object"&&M.once){let T=R.originalDelegate?R.originalDelegate:R.callback;E[l].call(E,$.type,T,M)}return X};function O(R,E,$){if(E=E||e.event,!E)return;let H=R||E.target||e,X=H[ee[E.type][$?ie:ce]];if(X){let M=[];if(X.length===1){let T=Z(X[0],H,E);T&&M.push(T)}else{let T=X.slice();for(let x=0;x{throw x})}}}let B=function(R){return O(this,R,!1)},A=function(R){return O(this,R,!0)};function J(R,E){if(!R)return!1;let $=!0;E&&E.useG!==void 0&&($=E.useG);let H=E&&E.vh,X=!0;E&&E.chkDup!==void 0&&(X=E.chkDup);let M=!1;E&&E.rt!==void 0&&(M=E.rt);let T=R;for(;T&&!T.hasOwnProperty(a);)T=Ie(T);if(!T&&R[a]&&(T=R),!T||T[b])return!1;let x=E&&E.eventNameToString,d={},N=T[b]=T[a],P=T[j(l)]=T[l],K=T[j(y)]=T[y],re=T[j(_)]=T[_],z;E&&E.prepend&&(z=T[j(E.prepend)]=T[E.prepend]);function U(i,h){return!_e&&typeof i=="object"&&i?!!i.capture:!_e||!h?i:typeof i=="boolean"?{capture:i,passive:!0}:i?typeof i=="object"&&i.passive!==!1?{...i,passive:!0}:i:{passive:!0}}let te=function(i){if(!d.isExisting)return N.call(d.target,d.eventName,d.capture?A:B,d.options)},Q=function(i){if(!i.isRemoved){let h=ee[i.eventName],g;h&&(g=h[i.capture?ie:ce]);let w=g&&i.target[g];if(w){for(let p=0;pfunction(a,l){a[tt]=!0,r&&r.apply(a,l)})}function Tt(e,n,c,r,a){let l=Zone.__symbol__(r);if(n[l])return;let y=n[l]=n[r];n[r]=function(_,b,k){return b&&b.prototype&&a.forEach(function(m){let I=`${c}.${r}::`+m,Z=b.prototype;try{if(Z.hasOwnProperty(m)){let O=e.ObjectGetOwnPropertyDescriptor(Z,m);O&&O.value?(O.value=e.wrapWithCurrentZone(O.value,I),e._redefineProperty(b.prototype,m,O)):Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],I))}else Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],I))}catch{}}),y.call(n,_,b,k)},e.attachOriginToPatched(n[r],y)}function ot(e,n,c){if(!c||c.length===0)return n;let r=c.filter(l=>l.target===e);if(!r||r.length===0)return n;let a=r[0].ignoreProperties;return n.filter(l=>a.indexOf(l)===-1)}function ze(e,n,c,r){if(!e)return;let a=ot(e,n,c);Ke(e,a,r)}function Oe(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function yt(e,n){if(we&&!Je||Zone[e.symbol("patchEvents")])return;let c=n.__Zone_ignore_on_properties,r=[];if(xe){let a=window;r=r.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let l=ft()?[{target:a,ignoreProperties:["error"]}]:[];ze(a,Oe(a),c&&c.concat(l),Ie(a))}r=r.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let a=0;a{let r=Oe(e);c.patchOnProperties=Ke,c.patchMethod=le,c.bindArguments=He,c.patchMacroTask=ut;let a=n.__symbol__("BLACK_LISTED_EVENTS"),l=n.__symbol__("UNPATCHED_EVENTS");e[l]&&(e[a]=e[l]),e[a]&&(n[a]=n[l]=e[a]),c.patchEventPrototype=Et,c.patchEventTarget=_t,c.isIEOrEdge=ht,c.ObjectDefineProperty=Ne,c.ObjectGetOwnPropertyDescriptor=me,c.ObjectCreate=it,c.ArraySlice=ct,c.patchClass=ge,c.wrapWithCurrentZone=Ae,c.filterProperties=ot,c.attachOriginToPatched=ae,c._redefineProperty=Object.defineProperty,c.patchCallbacks=Tt,c.getGlobalObjects=()=>({globalSources:Qe,zoneSymbolEventNames:ee,eventNames:r,isBrowser:xe,isMix:Je,isNode:we,TRUE_STR:ie,FALSE_STR:ce,ZONE_SYMBOL_PREFIX:pe,ADD_EVENT_LISTENER_STR:Me,REMOVE_EVENT_LISTENER_STR:Le})});function mt(e,n){n.patchMethod(e,"queueMicrotask",c=>function(r,a){Zone.current.scheduleMicroTask("queueMicrotask",a[0])})}var ve=j("zoneTask");function Ee(e,n,c,r){let a=null,l=null;n+=r,c+=r;let y={};function _(k){let m=k.data;return m.args[0]=function(){return k.invoke.apply(this,arguments)},m.handleId=a.apply(e,m.args),k}function b(k){return l.call(e,k.data.handleId)}a=le(e,n,k=>function(m,I){if(typeof I[0]=="function"){let Z={isPeriodic:r==="Interval",delay:r==="Timeout"||r==="Interval"?I[1]||0:void 0,args:I},O=I[0];I[0]=function(){try{return O.apply(this,arguments)}finally{Z.isPeriodic||(typeof Z.handleId=="number"?delete y[Z.handleId]:Z.handleId&&(Z.handleId[ve]=null))}};let B=je(n,I[0],Z,_,b);if(!B)return B;let A=B.data.handleId;return typeof A=="number"?y[A]=B:A&&(A[ve]=B),A&&A.ref&&A.unref&&typeof A.ref=="function"&&typeof A.unref=="function"&&(B.ref=A.ref.bind(A),B.unref=A.unref.bind(A)),typeof A=="number"||A?A:B}else return k.apply(e,I)}),l=le(e,c,k=>function(m,I){let Z=I[0],O;typeof Z=="number"?O=y[Z]:(O=Z&&Z[ve],O||(O=Z)),O&&typeof O.type=="string"?O.state!=="notScheduled"&&(O.cancelFn&&O.data.isPeriodic||O.runCount===0)&&(typeof Z=="number"?delete y[Z]:Z&&(Z[ve]=null),O.zone.cancelTask(O)):k.apply(e,I)})}function pt(e,n){let{isBrowser:c,isMix:r}=n.getGlobalObjects();if(!c&&!r||!e.customElements||!("customElements"in e))return;let a=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",a)}function gt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:c,zoneSymbolEventNames:r,TRUE_STR:a,FALSE_STR:l,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let b=0;b{let n=e[Zone.__symbol__("legacyPatch")];n&&n()});Zone.__load_patch("timers",e=>{let n="set",c="clear";Ee(e,n,c,"Timeout"),Ee(e,n,c,"Interval"),Ee(e,n,c,"Immediate")});Zone.__load_patch("requestAnimationFrame",e=>{Ee(e,"request","cancel","AnimationFrame"),Ee(e,"mozRequest","mozCancel","AnimationFrame"),Ee(e,"webkitRequest","webkitCancel","AnimationFrame")});Zone.__load_patch("blocking",(e,n)=>{let c=["alert","prompt","confirm"];for(let r=0;rfunction(b,k){return n.current.run(l,e,k,_)})}});Zone.__load_patch("EventTarget",(e,n,c)=>{kt(e,c),gt(e,c);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&c.patchEventTarget(e,c,[r.prototype])});Zone.__load_patch("MutationObserver",(e,n,c)=>{ge("MutationObserver"),ge("WebKitMutationObserver")});Zone.__load_patch("IntersectionObserver",(e,n,c)=>{ge("IntersectionObserver")});Zone.__load_patch("FileReader",(e,n,c)=>{ge("FileReader")});Zone.__load_patch("on_property",(e,n,c)=>{yt(c,e)});Zone.__load_patch("customElements",(e,n,c)=>{pt(e,c)});Zone.__load_patch("XHR",(e,n)=>{b(e);let c=j("xhrTask"),r=j("xhrSync"),a=j("xhrListener"),l=j("xhrScheduled"),y=j("xhrURL"),_=j("xhrErrorBeforeScheduled");function b(k){let m=k.XMLHttpRequest;if(!m)return;let I=m.prototype;function Z(d){return d[c]}let O=I[Se],B=I[De];if(!O){let d=k.XMLHttpRequestEventTarget;if(d){let N=d.prototype;O=N[Se],B=N[De]}}let A="readystatechange",J="scheduled";function q(d){let N=d.data,P=N.target;P[l]=!1,P[_]=!1;let K=P[a];O||(O=P[Se],B=P[De]),K&&B.call(P,A,K);let re=P[a]=()=>{if(P.readyState===P.DONE)if(!N.aborted&&P[l]&&d.state===J){let U=P[n.__symbol__("loadfalse")];if(P.status!==0&&U&&U.length>0){let te=d.invoke;d.invoke=function(){let Q=P[n.__symbol__("loadfalse")];for(let W=0;Wfunction(d,N){return d[r]=N[2]==!1,d[y]=N[1],$.apply(d,N)}),H="XMLHttpRequest.send",X=j("fetchTaskAborting"),M=j("fetchTaskScheduling"),T=le(I,"send",()=>function(d,N){if(n.current[M]===!0||d[r])return T.apply(d,N);{let P={target:d,url:d[y],isPeriodic:!1,args:N,aborted:!1},K=je(H,R,P,q,E);d&&d[_]===!0&&!P.aborted&&K.state===J&&K.invoke()}}),x=le(I,"abort",()=>function(d,N){let P=Z(d);if(P&&typeof P.type=="string"){if(P.cancelFn==null||P.data&&P.data.aborted)return;P.zone.cancelTask(P)}else if(n.current[X]===!0)return x.apply(d,N)})}});Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&<(e.navigator.geolocation,["getCurrentPosition","watchPosition"])});Zone.__load_patch("PromiseRejectionEvent",(e,n)=>{function c(r){return function(a){rt(e,r).forEach(y=>{let _=e.PromiseRejectionEvent;if(_){let b=new _(r,{promise:a.promise,reason:a.rejection});y.invoke(b)}})}}e.PromiseRejectionEvent&&(n[j("unhandledPromiseRejectionHandler")]=c("unhandledrejection"),n[j("rejectionHandledHandler")]=c("rejectionhandled"))});Zone.__load_patch("queueMicrotask",(e,n,c)=>{mt(e,c)}); diff --git a/internal/middleware/front/dist/front/browser/safety-worker.js b/internal/middleware/front/dist/front/browser/safety-worker.js new file mode 100755 index 0000000..a43c0f2 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/safety-worker.js @@ -0,0 +1,30 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +// tslint:disable:no-console + +self.addEventListener('install', (event) => { + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil(self.clients.claim()); + + event.waitUntil( + self.registration.unregister().then(() => { + console.log('NGSW Safety Worker - unregistered old service worker'); + }), + ); + + event.waitUntil( + caches.keys().then((cacheNames) => { + const ngswCacheNames = cacheNames.filter((name) => /^ngsw:/.test(name)); + return Promise.all(ngswCacheNames.map((name) => caches.delete(name))); + }), + ); +}); diff --git a/internal/middleware/front/dist/front/browser/styles-NJ66DI6F.css b/internal/middleware/front/dist/front/browser/styles-NJ66DI6F.css new file mode 100644 index 0000000..8658531 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/styles-NJ66DI6F.css @@ -0,0 +1 @@ +.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element,.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}.mat-theme-loaded-marker{display:none}html{--mat-ripple-color:rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color:#ff4081;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color:#f44336;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, .87)}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color:#3f51b5;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#3f51b5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html,.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color:#ff4081;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#ff4081;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color:#f44336;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html{--mat-app-background-color:#fafafa;--mat-app-text-color:rgba(0, 0, 0, .87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:.03125em;--mat-optgroup-label-text-weight:400}html{--mdc-elevated-card-container-shape:4px;--mdc-outlined-card-container-shape:4px;--mdc-outlined-card-outline-width:1px}html{--mdc-elevated-card-container-color:white;--mdc-elevated-card-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color:white;--mdc-outlined-card-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color:rgba(0, 0, 0, .54)}html{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:.0071428571em;--mat-card-subtitle-text-weight:500}html{--mdc-linear-progress-active-indicator-height:4px;--mdc-linear-progress-track-height:4px;--mdc-linear-progress-track-shape:0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color:#3f51b5;--mdc-linear-progress-track-color:rgba(63, 81, 181, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color:#ff4081;--mdc-linear-progress-track-color:rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color:#f44336;--mdc-linear-progress-track-color:rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape:4px;--mdc-plain-tooltip-supporting-text-line-height:16px}html{--mdc-plain-tooltip-container-color:#616161;--mdc-plain-tooltip-supporting-text-color:#fff}html{--mdc-plain-tooltip-supporting-text-font:Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size:12px;--mdc-plain-tooltip-supporting-text-weight:400;--mdc-plain-tooltip-supporting-text-tracking:.0333333333em}html{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}html{--mdc-filled-text-field-caret-color:#3f51b5;--mdc-filled-text-field-focus-active-indicator-color:#3f51b5;--mdc-filled-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color:whitesmoke;--mdc-filled-text-field-disabled-container-color:#fafafa;--mdc-filled-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color:#f44336;--mdc-filled-text-field-error-focus-label-text-color:#f44336;--mdc-filled-text-field-error-label-text-color:#f44336;--mdc-filled-text-field-error-caret-color:#f44336;--mdc-filled-text-field-active-indicator-color:rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color:rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color:#f44336;--mdc-filled-text-field-error-focus-active-indicator-color:#f44336;--mdc-filled-text-field-error-hover-active-indicator-color:#f44336;--mdc-outlined-text-field-caret-color:#3f51b5;--mdc-outlined-text-field-focus-outline-color:#3f51b5;--mdc-outlined-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color:#f44336;--mdc-outlined-text-field-error-focus-label-text-color:#f44336;--mdc-outlined-text-field-error-label-text-color:#f44336;--mdc-outlined-text-field-error-hover-label-text-color:#f44336;--mdc-outlined-text-field-outline-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color:rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color:#f44336;--mdc-outlined-text-field-error-hover-outline-color:#f44336;--mdc-outlined-text-field-error-outline-color:#f44336;--mat-form-field-focus-select-arrow-color:rgba(63, 81, 181, .87);--mat-form-field-disabled-input-text-placeholder-color:rgba(0, 0, 0, .38);--mat-form-field-state-layer-color:rgba(0, 0, 0, .87);--mat-form-field-error-text-color:#f44336;--mat-form-field-select-option-text-color:inherit;--mat-form-field-select-disabled-option-text-color:GrayText;--mat-form-field-leading-icon-color:unset;--mat-form-field-disabled-leading-icon-color:unset;--mat-form-field-trailing-icon-color:unset;--mat-form-field-disabled-trailing-icon-color:unset;--mat-form-field-error-focus-trailing-icon-color:unset;--mat-form-field-error-hover-trailing-icon-color:unset;--mat-form-field-error-trailing-icon-color:unset;--mat-form-field-enabled-select-arrow-color:rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color:rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity:.04;--mat-form-field-focus-state-layer-opacity:.08}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color:#ff4081;--mdc-filled-text-field-focus-active-indicator-color:#ff4081;--mdc-filled-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color:#ff4081;--mdc-outlined-text-field-focus-outline-color:#ff4081;--mdc-outlined-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mat-form-field-focus-select-arrow-color:rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color:#f44336;--mdc-filled-text-field-focus-active-indicator-color:#f44336;--mdc-filled-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color:#f44336;--mdc-outlined-text-field-focus-outline-color:#f44336;--mdc-outlined-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mat-form-field-focus-select-arrow-color:rgba(244, 67, 54, .87)}html{--mat-form-field-container-height:56px;--mat-form-field-filled-label-display:block;--mat-form-field-container-vertical-padding:16px;--mat-form-field-filled-with-label-container-padding-top:24px;--mat-form-field-filled-with-label-container-padding-bottom:8px}html{--mdc-filled-text-field-label-text-font:Roboto, sans-serif;--mdc-filled-text-field-label-text-size:16px;--mdc-filled-text-field-label-text-tracking:.03125em;--mdc-filled-text-field-label-text-weight:400;--mdc-outlined-text-field-label-text-font:Roboto, sans-serif;--mdc-outlined-text-field-label-text-size:16px;--mdc-outlined-text-field-label-text-tracking:.03125em;--mdc-outlined-text-field-label-text-weight:400;--mat-form-field-container-text-font:Roboto, sans-serif;--mat-form-field-container-text-line-height:24px;--mat-form-field-container-text-size:16px;--mat-form-field-container-text-tracking:.03125em;--mat-form-field-container-text-weight:400;--mat-form-field-outlined-label-text-populated-size:16px;--mat-form-field-subscript-text-font:Roboto, sans-serif;--mat-form-field-subscript-text-line-height:20px;--mat-form-field-subscript-text-size:12px;--mat-form-field-subscript-text-tracking:.0333333333em;--mat-form-field-subscript-text-weight:400}html{--mat-select-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html{--mat-select-arrow-transform:translateY(-8px)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-container-shape:4px;--mat-autocomplete-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color:white}html{--mdc-dialog-container-shape:4px;--mat-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width:80vw;--mat-dialog-container-small-max-width:80vw;--mat-dialog-container-min-width:0;--mat-dialog-actions-alignment:start;--mat-dialog-actions-padding:8px;--mat-dialog-content-padding:20px 24px;--mat-dialog-with-actions-content-padding:20px 24px;--mat-dialog-headline-padding:0 24px 9px}html{--mdc-dialog-container-color:white;--mdc-dialog-subhead-color:rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color:rgba(0, 0, 0, .6)}html{--mdc-dialog-subhead-font:Roboto, sans-serif;--mdc-dialog-subhead-line-height:32px;--mdc-dialog-subhead-size:20px;--mdc-dialog-subhead-weight:500;--mdc-dialog-subhead-tracking:.0125em;--mdc-dialog-supporting-text-font:Roboto, sans-serif;--mdc-dialog-supporting-text-line-height:24px;--mdc-dialog-supporting-text-size:16px;--mdc-dialog-supporting-text-weight:400;--mdc-dialog-supporting-text-tracking:.03125em}.mat-mdc-standard-chip{--mdc-chip-container-shape-family:rounded;--mdc-chip-container-shape-radius:16px 16px 16px 16px;--mdc-chip-with-avatar-avatar-shape-family:rounded;--mdc-chip-with-avatar-avatar-shape-radius:14px 14px 14px 14px;--mdc-chip-with-avatar-avatar-size:28px;--mdc-chip-with-icon-icon-size:18px;--mdc-chip-outline-width:0;--mdc-chip-outline-color:transparent;--mdc-chip-disabled-outline-color:transparent;--mdc-chip-focus-outline-color:transparent;--mdc-chip-hover-state-layer-opacity:.04;--mdc-chip-with-avatar-disabled-avatar-opacity:1;--mdc-chip-flat-selected-outline-width:0;--mdc-chip-selected-hover-state-layer-opacity:.04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity:1;--mdc-chip-with-icon-disabled-icon-opacity:1;--mat-chip-disabled-container-opacity:.4;--mat-chip-trailing-action-opacity:.54;--mat-chip-trailing-action-focus-opacity:1;--mat-chip-trailing-action-state-layer-color:transparent;--mat-chip-selected-trailing-action-state-layer-color:transparent;--mat-chip-trailing-action-hover-state-layer-opacity:0;--mat-chip-trailing-action-focus-state-layer-opacity:0}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color:#212121;--mdc-chip-elevated-container-color:#e0e0e0;--mdc-chip-elevated-selected-container-color:#e0e0e0;--mdc-chip-elevated-disabled-container-color:#e0e0e0;--mdc-chip-flat-disabled-selected-container-color:#e0e0e0;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:#212121;--mdc-chip-selected-label-text-color:#212121;--mdc-chip-with-icon-icon-color:#212121;--mdc-chip-with-icon-disabled-icon-color:#212121;--mdc-chip-with-icon-selected-icon-color:#212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:#212121;--mdc-chip-with-trailing-icon-trailing-icon-color:#212121;--mat-chip-selected-disabled-trailing-icon-color:#212121;--mat-chip-selected-trailing-icon-color:#212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#3f51b5;--mdc-chip-elevated-selected-container-color:#3f51b5;--mdc-chip-elevated-disabled-container-color:#3f51b5;--mdc-chip-flat-disabled-selected-container-color:#3f51b5;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#ff4081;--mdc-chip-elevated-selected-container-color:#ff4081;--mdc-chip-elevated-disabled-container-color:#ff4081;--mdc-chip-flat-disabled-selected-container-color:#ff4081;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#f44336;--mdc-chip-elevated-selected-container-color:#f44336;--mdc-chip-elevated-disabled-container-color:#f44336;--mdc-chip-flat-disabled-selected-container-color:#f44336;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height:32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font:Roboto, sans-serif;--mdc-chip-label-text-line-height:20px;--mdc-chip-label-text-size:14px;--mdc-chip-label-text-tracking:.0178571429em;--mdc-chip-label-text-weight:400}html{--mdc-switch-disabled-selected-icon-opacity:.38;--mdc-switch-disabled-track-opacity:.12;--mdc-switch-disabled-unselected-icon-opacity:.38;--mdc-switch-handle-height:20px;--mdc-switch-handle-shape:10px;--mdc-switch-handle-width:20px;--mdc-switch-selected-icon-size:18px;--mdc-switch-track-height:14px;--mdc-switch-track-shape:7px;--mdc-switch-track-width:36px;--mdc-switch-unselected-icon-size:18px;--mdc-switch-selected-focus-state-layer-opacity:.12;--mdc-switch-selected-hover-state-layer-opacity:.04;--mdc-switch-selected-pressed-state-layer-opacity:.1;--mdc-switch-unselected-focus-state-layer-opacity:.12;--mdc-switch-unselected-hover-state-layer-opacity:.04;--mdc-switch-unselected-pressed-state-layer-opacity:.1}html .mat-mdc-slide-toggle{--mat-switch-disabled-selected-handle-opacity:.38;--mat-switch-disabled-unselected-handle-opacity:.38;--mat-switch-unselected-handle-size:20px;--mat-switch-selected-handle-size:20px;--mat-switch-pressed-handle-size:20px;--mat-switch-with-icon-handle-size:20px;--mat-switch-selected-handle-horizontal-margin:0;--mat-switch-selected-with-icon-handle-horizontal-margin:0;--mat-switch-selected-pressed-handle-horizontal-margin:0;--mat-switch-unselected-handle-horizontal-margin:0;--mat-switch-unselected-with-icon-handle-horizontal-margin:0;--mat-switch-unselected-pressed-handle-horizontal-margin:0;--mat-switch-visible-track-opacity:1;--mat-switch-hidden-track-opacity:1;--mat-switch-visible-track-transition:transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition:transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width:1px;--mat-switch-track-outline-color:transparent;--mat-switch-selected-track-outline-width:1px;--mat-switch-selected-track-outline-color:transparent;--mat-switch-disabled-unselected-track-outline-width:1px;--mat-switch-disabled-unselected-track-outline-color:transparent}html{--mdc-switch-selected-focus-state-layer-color:#3949ab;--mdc-switch-selected-handle-color:#3949ab;--mdc-switch-selected-hover-state-layer-color:#3949ab;--mdc-switch-selected-pressed-state-layer-color:#3949ab;--mdc-switch-selected-focus-handle-color:#1a237e;--mdc-switch-selected-hover-handle-color:#1a237e;--mdc-switch-selected-pressed-handle-color:#1a237e;--mdc-switch-selected-focus-track-color:#7986cb;--mdc-switch-selected-hover-track-color:#7986cb;--mdc-switch-selected-pressed-track-color:#7986cb;--mdc-switch-selected-track-color:#7986cb;--mdc-switch-disabled-selected-handle-color:#424242;--mdc-switch-disabled-selected-icon-color:#fff;--mdc-switch-disabled-selected-track-color:#424242;--mdc-switch-disabled-unselected-handle-color:#424242;--mdc-switch-disabled-unselected-icon-color:#fff;--mdc-switch-disabled-unselected-track-color:#424242;--mdc-switch-handle-surface-color:var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color:black;--mdc-switch-disabled-handle-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color:#fff;--mdc-switch-unselected-focus-handle-color:#212121;--mdc-switch-unselected-focus-state-layer-color:#424242;--mdc-switch-unselected-focus-track-color:#e0e0e0;--mdc-switch-unselected-handle-color:#616161;--mdc-switch-unselected-hover-handle-color:#212121;--mdc-switch-unselected-hover-state-layer-color:#424242;--mdc-switch-unselected-hover-track-color:#e0e0e0;--mdc-switch-unselected-icon-color:#fff;--mdc-switch-unselected-pressed-handle-color:#212121;--mdc-switch-unselected-pressed-state-layer-color:#424242;--mdc-switch-unselected-pressed-track-color:#e0e0e0;--mdc-switch-unselected-track-color:#e0e0e0;--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html .mat-mdc-slide-toggle{--mat-switch-label-text-color:rgba(0, 0, 0, .87)}html .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color:#d81b60;--mdc-switch-selected-handle-color:#d81b60;--mdc-switch-selected-hover-state-layer-color:#d81b60;--mdc-switch-selected-pressed-state-layer-color:#d81b60;--mdc-switch-selected-focus-handle-color:#880e4f;--mdc-switch-selected-hover-handle-color:#880e4f;--mdc-switch-selected-pressed-handle-color:#880e4f;--mdc-switch-selected-focus-track-color:#f06292;--mdc-switch-selected-hover-track-color:#f06292;--mdc-switch-selected-pressed-track-color:#f06292;--mdc-switch-selected-track-color:#f06292}html .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color:#e53935;--mdc-switch-selected-handle-color:#e53935;--mdc-switch-selected-hover-state-layer-color:#e53935;--mdc-switch-selected-pressed-state-layer-color:#e53935;--mdc-switch-selected-focus-handle-color:#b71c1c;--mdc-switch-selected-hover-handle-color:#b71c1c;--mdc-switch-selected-pressed-handle-color:#b71c1c;--mdc-switch-selected-focus-track-color:#e57373;--mdc-switch-selected-hover-track-color:#e57373;--mdc-switch-selected-pressed-track-color:#e57373;--mdc-switch-selected-track-color:#e57373}html{--mdc-switch-state-layer-size:40px}html .mat-mdc-slide-toggle{--mat-switch-label-text-font:Roboto, sans-serif;--mat-switch-label-text-line-height:20px;--mat-switch-label-text-size:14px;--mat-switch-label-text-tracking:.0178571429em;--mat-switch-label-text-weight:400}html{--mdc-radio-disabled-selected-icon-opacity:.38;--mdc-radio-disabled-unselected-icon-opacity:.38;--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#3f51b5;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38);--mat-radio-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#ff4081;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38);--mat-radio-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#f44336;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38);--mat-radio-label-text-color:rgba(0, 0, 0, .87)}html{--mdc-radio-state-layer-size:40px;--mat-radio-touch-target-display:block}html{--mat-radio-label-text-font:Roboto, sans-serif;--mat-radio-label-text-line-height:20px;--mat-radio-label-text-size:14px;--mat-radio-label-text-tracking:.0178571429em;--mat-radio-label-text-weight:400}html{--mat-slider-value-indicator-width:auto;--mat-slider-value-indicator-height:32px;--mat-slider-value-indicator-caret-display:block;--mat-slider-value-indicator-border-radius:4px;--mat-slider-value-indicator-padding:0 12px;--mat-slider-value-indicator-text-transform:none;--mat-slider-value-indicator-container-transform:translateX(-50%);--mdc-slider-active-track-height:6px;--mdc-slider-active-track-shape:9999px;--mdc-slider-handle-height:20px;--mdc-slider-handle-shape:50%;--mdc-slider-handle-width:20px;--mdc-slider-inactive-track-height:4px;--mdc-slider-inactive-track-shape:9999px;--mdc-slider-with-overlap-handle-outline-width:1px;--mdc-slider-with-tick-marks-active-container-opacity:.6;--mdc-slider-with-tick-marks-container-shape:50%;--mdc-slider-with-tick-marks-container-size:2px;--mdc-slider-with-tick-marks-inactive-container-opacity:.6}html{--mdc-slider-handle-color:#3f51b5;--mdc-slider-focus-handle-color:#3f51b5;--mdc-slider-hover-handle-color:#3f51b5;--mdc-slider-active-track-color:#3f51b5;--mdc-slider-inactive-track-color:#3f51b5;--mdc-slider-with-tick-marks-inactive-container-color:#3f51b5;--mdc-slider-with-tick-marks-active-container-color:white;--mdc-slider-disabled-active-track-color:#000;--mdc-slider-disabled-handle-color:#000;--mdc-slider-disabled-inactive-track-color:#000;--mdc-slider-label-container-color:#000;--mdc-slider-label-label-text-color:#fff;--mdc-slider-with-overlap-handle-outline-color:#fff;--mdc-slider-with-tick-marks-disabled-container-color:#000;--mdc-slider-handle-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slider-ripple-color:#3f51b5;--mat-slider-hover-state-layer-color:rgba(63, 81, 181, .05);--mat-slider-focus-state-layer-color:rgba(63, 81, 181, .2);--mat-slider-value-indicator-opacity:.6}html .mat-accent{--mat-slider-ripple-color:#ff4081;--mat-slider-hover-state-layer-color:rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color:rgba(255, 64, 129, .2);--mdc-slider-handle-color:#ff4081;--mdc-slider-focus-handle-color:#ff4081;--mdc-slider-hover-handle-color:#ff4081;--mdc-slider-active-track-color:#ff4081;--mdc-slider-inactive-track-color:#ff4081;--mdc-slider-with-tick-marks-inactive-container-color:#ff4081;--mdc-slider-with-tick-marks-active-container-color:white}html .mat-warn{--mat-slider-ripple-color:#f44336;--mat-slider-hover-state-layer-color:rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color:rgba(244, 67, 54, .2);--mdc-slider-handle-color:#f44336;--mdc-slider-focus-handle-color:#f44336;--mdc-slider-hover-handle-color:#f44336;--mdc-slider-active-track-color:#f44336;--mdc-slider-inactive-track-color:#f44336;--mdc-slider-with-tick-marks-inactive-container-color:#f44336;--mdc-slider-with-tick-marks-active-container-color:white}html{--mdc-slider-label-label-text-font:Roboto, sans-serif;--mdc-slider-label-label-text-size:14px;--mdc-slider-label-label-text-line-height:22px;--mdc-slider-label-label-text-tracking:.0071428571em;--mdc-slider-label-label-text-weight:500}html{--mat-menu-container-shape:4px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, .87);--mat-menu-item-icon-color:rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-container-color:white;--mat-menu-divider-color:rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}html{--mdc-list-list-item-container-shape:0;--mdc-list-list-item-leading-avatar-shape:50%;--mdc-list-list-item-container-color:transparent;--mdc-list-list-item-selected-container-color:transparent;--mdc-list-list-item-leading-avatar-color:transparent;--mdc-list-list-item-leading-icon-size:24px;--mdc-list-list-item-leading-avatar-size:40px;--mdc-list-list-item-trailing-icon-size:24px;--mdc-list-list-item-disabled-state-layer-color:transparent;--mdc-list-list-item-disabled-state-layer-opacity:0;--mdc-list-list-item-disabled-label-text-opacity:.38;--mdc-list-list-item-disabled-leading-icon-opacity:.38;--mdc-list-list-item-disabled-trailing-icon-opacity:.38;--mat-list-active-indicator-color:transparent;--mat-list-active-indicator-shape:4px}html{--mdc-list-list-item-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color:rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color:black;--mdc-list-list-item-disabled-leading-icon-color:black;--mdc-list-list-item-disabled-trailing-icon-color:black;--mdc-list-list-item-hover-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color:black;--mdc-list-list-item-hover-state-layer-opacity:.04;--mdc-list-list-item-focus-state-layer-color:black;--mdc-list-list-item-focus-state-layer-opacity:.12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}html{--mdc-list-list-item-one-line-container-height:48px;--mdc-list-list-item-two-line-container-height:64px;--mdc-list-list-item-three-line-container-height:88px;--mat-list-list-item-leading-icon-start-space:16px;--mat-list-list-item-leading-icon-end-space:32px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size:40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mdc-list-list-item-label-text-font:Roboto, sans-serif;--mdc-list-list-item-label-text-line-height:24px;--mdc-list-list-item-label-text-size:16px;--mdc-list-list-item-label-text-tracking:.03125em;--mdc-list-list-item-label-text-weight:400;--mdc-list-list-item-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height:20px;--mdc-list-list-item-supporting-text-size:14px;--mdc-list-list-item-supporting-text-tracking:.0178571429em;--mdc-list-list-item-supporting-text-weight:400;--mdc-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height:20px;--mdc-list-list-item-trailing-supporting-text-size:12px;--mdc-list-list-item-trailing-supporting-text-tracking:.0333333333em;--mdc-list-list-item-trailing-supporting-text-weight:400}.mdc-list-group__subheader{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color:rgba(0, 0, 0, .87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color:rgba(0, 0, 0, .12)}html{--mat-paginator-container-size:56px;--mat-paginator-form-field-container-height:40px;--mat-paginator-form-field-container-vertical-padding:8px}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}html{--mdc-tab-indicator-active-indicator-height:2px;--mdc-tab-indicator-active-indicator-shape:0;--mdc-secondary-navigation-tab-container-height:48px;--mat-tab-header-divider-color:transparent;--mat-tab-header-divider-height:0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color:#3f51b5;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#3f51b5;--mat-tab-header-active-ripple-color:#3f51b5;--mat-tab-header-inactive-ripple-color:#3f51b5;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#3f51b5;--mat-tab-header-active-hover-label-text-color:#3f51b5;--mat-tab-header-active-focus-indicator-color:#3f51b5;--mat-tab-header-active-hover-indicator-color:#3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color:#ff4081;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#ff4081;--mat-tab-header-active-ripple-color:#ff4081;--mat-tab-header-inactive-ripple-color:#ff4081;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#ff4081;--mat-tab-header-active-hover-label-text-color:#ff4081;--mat-tab-header-active-focus-indicator-color:#ff4081;--mat-tab-header-active-hover-indicator-color:#ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color:#f44336;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#f44336;--mat-tab-header-active-ripple-color:#f44336;--mat-tab-header-inactive-ripple-color:#f44336;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#f44336;--mat-tab-header-active-hover-label-text-color:#f44336;--mat-tab-header-active-focus-indicator-color:#f44336;--mat-tab-header-active-hover-indicator-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color:#3f51b5;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color:#ff4081;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color:#f44336;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height:48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font:Roboto, sans-serif;--mat-tab-header-label-text-size:14px;--mat-tab-header-label-text-tracking:.0892857143em;--mat-tab-header-label-text-line-height:36px;--mat-tab-header-label-text-weight:500}html{--mdc-checkbox-disabled-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-state-layer-opacity:.16;--mdc-checkbox-selected-hover-state-layer-opacity:.04;--mdc-checkbox-selected-pressed-state-layer-opacity:.16;--mdc-checkbox-unselected-focus-state-layer-opacity:.16;--mdc-checkbox-unselected-hover-state-layer-opacity:.04;--mdc-checkbox-unselected-pressed-state-layer-opacity:.16}html{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black;--mat-checkbox-disabled-label-color:rgba(0, 0, 0, .38);--mat-checkbox-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}html{--mdc-checkbox-state-layer-size:40px;--mat-checkbox-touch-target-display:block}html{--mat-checkbox-label-text-font:Roboto, sans-serif;--mat-checkbox-label-text-line-height:20px;--mat-checkbox-label-text-size:14px;--mat-checkbox-label-text-tracking:.0178571429em;--mat-checkbox-label-text-weight:400}html{--mdc-text-button-container-shape:4px;--mdc-text-button-keep-touch-target:false;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mdc-protected-button-container-shape:4px;--mdc-protected-button-keep-touch-target:false;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-outlined-button-container-shape:4px;--mat-text-button-horizontal-padding:8px;--mat-text-button-with-icon-horizontal-padding:8px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-protected-button-horizontal-padding:16px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:15px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px}html{--mdc-text-button-label-text-color:black;--mdc-text-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-text-button-state-layer-color:black;--mat-text-button-disabled-state-layer-color:black;--mat-text-button-ripple-color:rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity:.04;--mat-text-button-focus-state-layer-opacity:.12;--mat-text-button-pressed-state-layer-opacity:.12;--mdc-filled-button-container-color:white;--mdc-filled-button-label-text-color:black;--mdc-filled-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-filled-button-state-layer-color:black;--mat-filled-button-disabled-state-layer-color:black;--mat-filled-button-ripple-color:rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity:.04;--mat-filled-button-focus-state-layer-opacity:.12;--mat-filled-button-pressed-state-layer-opacity:.12;--mdc-protected-button-container-color:white;--mdc-protected-button-label-text-color:black;--mdc-protected-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation-shadow:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-protected-button-container-shadow-color:#000;--mat-protected-button-state-layer-color:black;--mat-protected-button-disabled-state-layer-color:black;--mat-protected-button-ripple-color:rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity:.04;--mat-protected-button-focus-state-layer-opacity:.12;--mat-protected-button-pressed-state-layer-opacity:.12;--mdc-outlined-button-disabled-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color:black;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:black;--mat-outlined-button-disabled-state-layer-color:black;--mat-outlined-button-ripple-color:rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity:.04;--mat-outlined-button-focus-state-layer-opacity:.12;--mat-outlined-button-pressed-state-layer-opacity:.12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color:#3f51b5;--mat-text-button-state-layer-color:#3f51b5;--mat-text-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color:#ff4081;--mat-text-button-state-layer-color:#ff4081;--mat-text-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color:#f44336;--mat-text-button-state-layer-color:#f44336;--mat-text-button-ripple-color:rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color:#3f51b5;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color:#ff4081;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color:#f44336;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color:#3f51b5;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color:#ff4081;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color:#f44336;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color:#3f51b5;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#3f51b5;--mat-outlined-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color:#ff4081;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#ff4081;--mat-outlined-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color:#f44336;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#f44336;--mat-outlined-button-ripple-color:rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height:36px;--mdc-filled-button-container-height:36px;--mdc-outlined-button-container-height:36px;--mdc-protected-button-container-height:36px;--mat-text-button-touch-target-display:block;--mat-filled-button-touch-target-display:block;--mat-protected-button-touch-target-display:block;--mat-outlined-button-touch-target-display:block}html{--mdc-text-button-label-text-font:Roboto, sans-serif;--mdc-text-button-label-text-size:14px;--mdc-text-button-label-text-tracking:.0892857143em;--mdc-text-button-label-text-weight:500;--mdc-text-button-label-text-transform:none;--mdc-filled-button-label-text-font:Roboto, sans-serif;--mdc-filled-button-label-text-size:14px;--mdc-filled-button-label-text-tracking:.0892857143em;--mdc-filled-button-label-text-weight:500;--mdc-filled-button-label-text-transform:none;--mdc-outlined-button-label-text-font:Roboto, sans-serif;--mdc-outlined-button-label-text-size:14px;--mdc-outlined-button-label-text-tracking:.0892857143em;--mdc-outlined-button-label-text-weight:500;--mdc-outlined-button-label-text-transform:none;--mdc-protected-button-label-text-font:Roboto, sans-serif;--mdc-protected-button-label-text-size:14px;--mdc-protected-button-label-text-tracking:.0892857143em;--mdc-protected-button-label-text-weight:500;--mdc-protected-button-label-text-transform:none}html{--mdc-icon-button-icon-size:24px}html{--mdc-icon-button-icon-color:inherit;--mdc-icon-button-disabled-icon-color:rgba(0, 0, 0, .38);--mat-icon-button-state-layer-color:black;--mat-icon-button-disabled-state-layer-color:black;--mat-icon-button-ripple-color:rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity:.04;--mat-icon-button-focus-state-layer-opacity:.12;--mat-icon-button-pressed-state-layer-opacity:.12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color:#3f51b5;--mat-icon-button-state-layer-color:#3f51b5;--mat-icon-button-ripple-color:rgba(63, 81, 181, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color:#ff4081;--mat-icon-button-state-layer-color:#ff4081;--mat-icon-button-ripple-color:rgba(255, 64, 129, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color:#f44336;--mat-icon-button-state-layer-color:#f44336;--mat-icon-button-ripple-color:rgba(244, 67, 54, .1)}html{--mat-icon-button-touch-target-display:block}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape:50%;--mdc-fab-icon-size:24px;--mdc-fab-small-container-shape:50%;--mdc-fab-small-icon-size:24px;--mdc-extended-fab-container-height:48px;--mdc-extended-fab-container-shape:24px}html{--mdc-fab-container-color:white;--mdc-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-container-shadow-color:#000;--mat-fab-foreground-color:black;--mat-fab-state-layer-color:black;--mat-fab-disabled-state-layer-color:black;--mat-fab-ripple-color:rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity:.04;--mat-fab-focus-state-layer-opacity:.12;--mat-fab-pressed-state-layer-opacity:.12;--mat-fab-disabled-state-container-color:rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color:rgba(0, 0, 0, .38);--mdc-fab-small-container-color:white;--mdc-fab-small-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-small-container-shadow-color:#000;--mat-fab-small-foreground-color:black;--mat-fab-small-state-layer-color:black;--mat-fab-small-disabled-state-layer-color:black;--mat-fab-small-ripple-color:rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity:.04;--mat-fab-small-focus-state-layer-opacity:.12;--mat-fab-small-pressed-state-layer-opacity:.12;--mat-fab-small-disabled-state-container-color:rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color:rgba(0, 0, 0, .38);--mdc-extended-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-extended-fab-container-shadow-color:#000}html .mat-mdc-fab.mat-primary{--mdc-fab-container-color:#3f51b5;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent{--mdc-fab-container-color:#ff4081;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-warn{--mdc-fab-container-color:#f44336;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-primary{--mdc-fab-small-container-color:#3f51b5;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-accent{--mdc-fab-small-container-color:#ff4081;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-warn{--mdc-fab-small-container-color:#f44336;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html{--mat-fab-touch-target-display:block;--mat-fab-small-touch-target-display:block}html{--mdc-extended-fab-label-text-font:Roboto, sans-serif;--mdc-extended-fab-label-text-size:14px;--mdc-extended-fab-label-text-tracking:.0892857143em;--mdc-extended-fab-label-text-weight:500}html{--mdc-snackbar-container-shape:4px}html{--mdc-snackbar-container-color:#333333;--mdc-snackbar-supporting-text-color:rgba(255, 255, 255, .87);--mat-snack-bar-button-color:#ff4081}html{--mdc-snackbar-supporting-text-font:Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height:20px;--mdc-snackbar-supporting-text-size:14px;--mdc-snackbar-supporting-text-weight:400}html{--mat-table-row-item-outline-width:1px}html{--mat-table-background-color:white;--mat-table-header-headline-color:rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color:rgba(0, 0, 0, .87);--mat-table-row-item-outline-color:rgba(0, 0, 0, .12)}html{--mat-table-header-container-height:56px;--mat-table-footer-container-height:52px;--mat-table-row-item-container-height:52px}html{--mat-table-header-headline-font:Roboto, sans-serif;--mat-table-header-headline-line-height:22px;--mat-table-header-headline-size:14px;--mat-table-header-headline-weight:500;--mat-table-header-headline-tracking:.0071428571em;--mat-table-row-item-label-text-font:Roboto, sans-serif;--mat-table-row-item-label-text-line-height:20px;--mat-table-row-item-label-text-size:14px;--mat-table-row-item-label-text-weight:400;--mat-table-row-item-label-text-tracking:.0178571429em;--mat-table-footer-supporting-text-font:Roboto, sans-serif;--mat-table-footer-supporting-text-line-height:20px;--mat-table-footer-supporting-text-size:14px;--mat-table-footer-supporting-text-weight:400;--mat-table-footer-supporting-text-tracking:.0178571429em}html{--mdc-circular-progress-active-indicator-width:4px;--mdc-circular-progress-size:48px}html{--mdc-circular-progress-active-indicator-color:#3f51b5}html .mat-accent{--mdc-circular-progress-active-indicator-color:#ff4081}html .mat-warn{--mdc-circular-progress-active-indicator-color:#f44336}html{--mat-badge-container-shape:50%;--mat-badge-container-size:unset;--mat-badge-small-size-container-size:unset;--mat-badge-large-size-container-size:unset;--mat-badge-legacy-container-size:22px;--mat-badge-legacy-small-size-container-size:16px;--mat-badge-legacy-large-size-container-size:28px;--mat-badge-container-offset:-11px 0;--mat-badge-small-size-container-offset:-8px 0;--mat-badge-large-size-container-offset:-14px 0;--mat-badge-container-overlap-offset:-11px;--mat-badge-small-size-container-overlap-offset:-8px;--mat-badge-large-size-container-overlap-offset:-14px;--mat-badge-container-padding:0;--mat-badge-small-size-container-padding:0;--mat-badge-large-size-container-padding:0}html{--mat-badge-background-color:#3f51b5;--mat-badge-text-color:white;--mat-badge-disabled-state-background-color:#b9b9b9;--mat-badge-disabled-state-text-color:rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color:#ff4081;--mat-badge-text-color:white}.mat-badge-warn{--mat-badge-background-color:#f44336;--mat-badge-text-color:white}html{--mat-badge-text-font:Roboto, sans-serif;--mat-badge-text-size:12px;--mat-badge-text-weight:600;--mat-badge-small-size-text-size:9px;--mat-badge-large-size-text-size:24px}html{--mat-bottom-sheet-container-shape:4px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-legacy-button-toggle-height:36px;--mat-legacy-button-toggle-shape:2px;--mat-legacy-button-toggle-focus-state-layer-opacity:1;--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:.04;--mat-standard-button-toggle-focus-state-layer-opacity:.12}html{--mat-legacy-button-toggle-text-color:rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color:rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color:rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color:#e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color:#eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color:white;--mat-standard-button-toggle-state-layer-color:black;--mat-standard-button-toggle-selected-state-background-color:#e0e0e0;--mat-standard-button-toggle-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color:white;--mat-standard-button-toggle-disabled-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-divider-color:#e0e0e0}html{--mat-standard-button-toggle-height:48px}html{--mat-legacy-button-toggle-label-text-font:Roboto, sans-serif;--mat-legacy-button-toggle-label-text-line-height:24px;--mat-legacy-button-toggle-label-text-size:16px;--mat-legacy-button-toggle-label-text-tracking:.03125em;--mat-legacy-button-toggle-label-text-weight:400;--mat-standard-button-toggle-label-text-font:Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height:24px;--mat-standard-button-toggle-label-text-size:16px;--mat-standard-button-toggle-label-text-tracking:.03125em;--mat-standard-button-toggle-label-text-weight:400}html{--mat-datepicker-calendar-container-shape:4px;--mat-datepicker-calendar-container-touch-shape:4px;--mat-datepicker-calendar-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color:#3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color:rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e;--mat-datepicker-toggle-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color:black;--mat-datepicker-calendar-period-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color:rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color:rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color:rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color:transparent;--mat-datepicker-calendar-date-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color:rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color:rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color:rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color:white;--mat-datepicker-calendar-container-text-color:rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color:#ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color:#f44336}.mat-calendar-controls{--mat-icon-button-touch-target-display:none}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html{--mat-datepicker-calendar-text-font:Roboto, sans-serif;--mat-datepicker-calendar-text-size:13px;--mat-datepicker-calendar-body-label-text-size:14px;--mat-datepicker-calendar-body-label-text-weight:500;--mat-datepicker-calendar-period-button-text-size:14px;--mat-datepicker-calendar-period-button-text-weight:500;--mat-datepicker-calendar-header-text-size:11px;--mat-datepicker-calendar-header-text-weight:400}html{--mat-divider-width:1px}html{--mat-divider-color:rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape:4px;--mat-expansion-legacy-header-indicator-display:inline-block;--mat-expansion-header-indicator-display:none}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-expansion-header-text-color:rgba(0, 0, 0, .87);--mat-expansion-header-description-color:rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}html{--mat-icon-color:inherit}.mat-icon.mat-primary{--mat-icon-color:#3f51b5}.mat-icon.mat-accent{--mat-icon-color:#ff4081}.mat-icon.mat-warn{--mat-icon-color:#f44336}html{--mat-sidenav-container-shape:0;--mat-sidenav-container-elevation-shadow:0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width:auto}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, .12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, .87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, .87);--mat-sidenav-scrim-color:rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#ff4081;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#ff4081;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#ff4081;--mat-stepper-header-edit-state-icon-foreground-color:white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#f44336;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#f44336;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#f44336;--mat-stepper-header-edit-state-icon-foreground-color:white}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}html{--mat-sort-arrow-color:#757575}html{--mat-toolbar-container-background-color:whitesmoke;--mat-toolbar-container-text-color:rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color:#3f51b5;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color:#ff4081;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color:#f44336;--mat-toolbar-container-text-color:white}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:.0125em;--mat-toolbar-title-text-weight:500}html{--mat-tree-container-background-color:white;--mat-tree-node-text-color:rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height:48px}html{--mat-tree-node-text-font:Roboto, sans-serif;--mat-tree-node-text-size:14px;--mat-tree-node-text-weight:400}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font:400 24px/32px Roboto,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font:500 20px/32px Roboto,sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font:400 16px/24px Roboto,sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font:500 14px/22px Roboto,sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font:400 14px/20px Roboto,sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font:400 12px/20px Roboto,sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font:300 96px/96px Roboto,sans-serif;letter-spacing:-.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font:300 60px/60px Roboto,sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font:400 48px/50px Roboto,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font:400 34px/40px Roboto,sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}:root{--primary-color: rgb(63, 81, 181);--my-primary-color: rgb(67, 80, 175);--my-success-text-color: rgb(94, 140, 117);--my-success-backgroud-color: rgb(203, 228, 216);--my-warning-text-color: rgb(132, 113, 56);--my-warning-backgroud-color: rgb(254, 243, 200);--my-error-text-color: rgb(136, 52, 61);--my-error-backgroud-color: rgb(246, 209, 213);--my-info-text-color: rgb(60, 64, 69);--my-info-backgroud-color: rgb(222, 223, 225);font-size:8px}html,body{margin:0;padding:0;height:100vh;max-height:100vh}html,body{height:100%}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif}.mat-mdc-snack-bar-container.info-snackbar{--mdc-snackbar-container-color: var(--my-info-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-info-text-color)}.mat-mdc-snack-bar-container.success-snackbar{--mdc-snackbar-container-color: var(--my-success-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-success-text-color)}.mat-mdc-snack-bar-container.warning-snackbar{--mdc-snackbar-container-color: var(--my-warning-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-warning-text-color)}.mat-mdc-snack-bar-container.error-snackbar{--mdc-snackbar-container-color: var(--my-error-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-error-text-color)}.snack-message{display:flex;align-items:center;height:100%}.snack-message div{height:100%;display:flex;align-items:center}.snack-message div.snack-message-content{margin-left:1rem} diff --git a/internal/middleware/front/dist/front/browser/worker-basic.min.js b/internal/middleware/front/dist/front/browser/worker-basic.min.js new file mode 100755 index 0000000..a43c0f2 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/worker-basic.min.js @@ -0,0 +1,30 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +// tslint:disable:no-console + +self.addEventListener('install', (event) => { + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil(self.clients.claim()); + + event.waitUntil( + self.registration.unregister().then(() => { + console.log('NGSW Safety Worker - unregistered old service worker'); + }), + ); + + event.waitUntil( + caches.keys().then((cacheNames) => { + const ngswCacheNames = cacheNames.filter((name) => /^ngsw:/.test(name)); + return Promise.all(ngswCacheNames.map((name) => caches.delete(name))); + }), + ); +}); diff --git a/internal/middleware/front/front.go b/internal/middleware/front/front.go new file mode 100644 index 0000000..640cdd4 --- /dev/null +++ b/internal/middleware/front/front.go @@ -0,0 +1,61 @@ +package front + +import ( + "embed" + "fmt" + "github.com/loveuer/nf" + "net/http" + "strings" + "ultone/internal/log" +) + +//go:embed dist/front/browser +var DefaultFront embed.FS + +func NewFront(ff *embed.FS, basePath string) nf.HandlerFunc { + var ( + e error + indexBytes []byte + index string + ) + + index = fmt.Sprintf("%s/index.html", basePath) + + if indexBytes, e = ff.ReadFile(index); e != nil { + log.Panic(nil, "read index file err: %v", e) + } + + return func(c *nf.Ctx) error { + var ( + err error + bs []byte + path = c.Path() + ) + + if bs, err = ff.ReadFile(basePath + path); err != nil { + log.Debug(c, "embed read file [%s]%s err: %v", basePath, path, err) + c.Set("Content-Type", "text/html") + _, err = c.Write(indexBytes) + return err + } + + var dbs []byte + if len(bs) > 512 { + dbs = bs[:512] + } else { + dbs = bs + } + + switch { + case strings.HasSuffix(path, ".js"): + c.Set("Content-Type", "application/javascript") + case strings.HasSuffix(path, ".css"): + c.Set("Content-Type", "text/css") + default: + c.Set("Content-Type", http.DetectContentType(dbs)) + } + + _, err = c.Write(bs) + return err + } +} diff --git a/internal/middleware/logger/logger.go b/internal/middleware/logger/logger.go new file mode 100644 index 0000000..3e3ff75 --- /dev/null +++ b/internal/middleware/logger/logger.go @@ -0,0 +1,62 @@ +package logger + +import ( + "fmt" + "github.com/google/uuid" + "github.com/loveuer/esgo2dump/log" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "net/http" + "strconv" + "strings" + "time" + "ultone/internal/opt" + "ultone/internal/tool" +) + +var ( + Header = http.CanonicalHeaderKey("X-Trace-Id") +) + +func New() nf.HandlerFunc { + + return func(c *nf.Ctx) error { + var ( + now = time.Now() + trace = c.Get(Header) + logFn func(msg string, data ...any) + ip = c.IP() + ) + + if trace == "" { + trace = uuid.Must(uuid.NewV7()).String() + } + + c.SetHeader(Header, trace) + + traces := strings.Split(trace, "-") + shortTrace := traces[len(traces)-1] + + c.Locals(opt.LocalTraceKey, trace) + c.Locals(opt.LocalShortTraceKey, shortTrace) + + err := c.Next() + status, _ := strconv.Atoi(c.Writer.Header().Get(resp.RealStatusHeader)) + duration := time.Since(now) + + msg := fmt.Sprintf("%s | %15s | %d[%3d] | %s | %6s | %s", shortTrace, ip, c.StatusCode, status, tool.HumanDuration(duration.Nanoseconds()), c.Method(), c.Path()) + + switch { + case status >= 500: + logFn = log.Error + case status >= 400: + logFn = log.Warn + default: + logFn = log.Info + } + + logFn(msg) + + return err + } +} diff --git a/internal/middleware/oplog/new.go b/internal/middleware/oplog/new.go new file mode 100644 index 0000000..a7b5fe4 --- /dev/null +++ b/internal/middleware/oplog/new.go @@ -0,0 +1,117 @@ +package oplog + +import ( + "context" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/log" + "sync" + "time" + "ultone/internal/database/db" + "ultone/internal/model" + "ultone/internal/opt" + "ultone/internal/sqlType" + "ultone/internal/tool" +) + +var ( + _once = &sync.Once{} + lc = make(chan *model.OpLog, 1024) +) + +// NewOpLog +// +// * 记录操作日志的 中间件使用方法如下: +// +// app := nf.New() +// app.Post("/login", oplog.NewOpLog(ctx), HandleLog) +// +// func HandleLog(c *nf.Ctx) error { +// // 你的操作逻辑 +// c.Local(opt.OpLogLocalKey, &oplog.OpLog{}) +// // 剩下某些逻辑 +// // return xxx +// } +func NewOpLog(ctx context.Context) nf.HandlerFunc { + + _once.Do(func() { + go func() { + var ( + err error + ticker = time.NewTicker(time.Duration(opt.OpLogWriteDurationSecond) * time.Second) + list = make([]*model.OpLog, 0, 1024) + + write = func() { + if len(list) == 0 { + return + } + + if err = db.New(tool.Timeout(10)). + Model(&model.OpLog{}). + Create(&list). + Error; err != nil { + log.Error("middleware.NewOpLog: write logs err=%v", err) + } + + list = list[:0] + } + ) + + Loop: + for { + select { + case <-ctx.Done(): + break Loop + case <-ticker.C: + write() + case item, ok := <-lc: + if !ok { + return + } + + list = append(list, item) + + if len(list) >= 100 { + write() + } + } + } + + write() + }() + }) + + return func(c *nf.Ctx) error { + now := time.Now() + + err := c.Next() + + op, ok := c.Locals("user").(*model.User) + + opv := c.Locals(opt.OpLogLocalKey) + logItem, ok := opv.(*OpLog) + if !ok { + log.Warn("middleware.NewOpLog: %s - %s local '%s' to [*OpLog] invalid", c.Method(), c.Path(), opt.OpLogLocalKey) + return err + } + + logItem.Content["time"] = now.UnixMilli() + logItem.Content["user_id"] = op.Id + logItem.Content["username"] = op.Username + logItem.Content["created_at"] = now.UnixMilli() + + select { + case lc <- &model.OpLog{ + CreatedAt: now.UnixMilli(), + UpdatedAt: now.UnixMilli(), + UserId: op.Id, + Username: op.Username, + Type: logItem.Type, + Content: sqlType.NewJSONB(logItem.Content), + }: + case <-tool.Timeout(3).Done(): + log.Warn("middleware.NewOpLog: %s - %s log -> chan timeout[3s]", c.Method, c.Path()) + } + + return err + } +} diff --git a/internal/middleware/oplog/oplog.go b/internal/middleware/oplog/oplog.go new file mode 100644 index 0000000..7c09272 --- /dev/null +++ b/internal/middleware/oplog/oplog.go @@ -0,0 +1,8 @@ +package oplog + +import "ultone/internal/model" + +type OpLog struct { + Type model.OpLogType + Content map[string]any +} diff --git a/internal/middleware/privilege/privilege.go b/internal/middleware/privilege/privilege.go new file mode 100644 index 0000000..9eadaf7 --- /dev/null +++ b/internal/middleware/privilege/privilege.go @@ -0,0 +1,86 @@ +package privilege + +import ( + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/log" + "github.com/loveuer/nf/nft/resp" + "github.com/samber/lo" + "strings" + "ultone/internal/model" +) + +type Relation int64 + +type vf func(user *model.User, ps ...model.Privilege) error + +const ( + RelationAnd Relation = iota + 1 + RelationOr +) + +var ( + AndFunc vf = func(user *model.User, ps ...model.Privilege) error { + pm := lo.SliceToMap(user.Privileges, func(item model.Privilege) (int64, struct{}) { + return item.Value(), struct{}{} + }) + + for _, p := range ps { + if _, exist := pm[p.Value()]; !exist { + return fmt.Errorf("缺少权限: %d, %s, %s", p.Value(), p.Code(), p.Label()) + } + } + + return nil + } + + OrFunc vf = func(user *model.User, ps ...model.Privilege) error { + pm := lo.SliceToMap(user.Privileges, func(item model.Privilege) (int64, struct{}) { + return item.Value(), struct{}{} + }) + + for _, p := range ps { + if _, exist := pm[p.Value()]; exist { + return nil + } + } + + return fmt.Errorf("缺少权限: %s", strings.Join( + lo.Map(ps, func(item model.Privilege, index int) string { + return item.Code() + }), + ", ", + )) + } +) + +func Verify(relation Relation, privileges ...model.Privilege) nf.HandlerFunc { + + var _vf vf + + switch relation { + case RelationAnd: + _vf = AndFunc + case RelationOr: + _vf = OrFunc + default: + log.Panic("middleware.Verify: unknown relation") + } + + return func(c *nf.Ctx) error { + if len(privileges) == 0 { + return c.Next() + } + + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + if err := _vf(op, privileges...); err != nil { + return resp.Resp403(c, err.Error()) + } + + return c.Next() + } +} diff --git a/internal/model/init.go b/internal/model/init.go new file mode 100644 index 0000000..0563b66 --- /dev/null +++ b/internal/model/init.go @@ -0,0 +1,87 @@ +package model + +import ( + "fmt" + "github.com/loveuer/nf/nft/log" + "gorm.io/gorm" + "strings" + "ultone/internal/opt" + "ultone/internal/sqlType" +) + +func Init(db *gorm.DB) error { + var err error + + if err = initModel(db); err != nil { + return fmt.Errorf("model.MustInit: init models err=%v", err) + } + + log.Info("MustInitModels: auto_migrate privilege model success") + + if err = initData(db); err != nil { + return fmt.Errorf("model.MustInit: init datas err=%v", err) + } + + return nil +} + +func initModel(client *gorm.DB) error { + if err := client.AutoMigrate( + &User{}, + &OpLog{}, + ); err != nil { + return err + } + + log.Info("InitModels: auto_migrate user model success") + + return nil +} + +func initData(client *gorm.DB) error { + var ( + err error + ) + + { + count := 0 + + if err = client.Model(&User{}).Select("count(id)").Take(&count).Error; err != nil { + return err + } + + if count < len(initUsers) { + log.Warn("mustInitDatas: user count = 0, start init...") + for _, user := range initUsers { + if err = client.Model(&User{}).Create(user).Error; err != nil { + if !strings.Contains(err.Error(), "SQLSTATE 23505") { + return err + } + } + } + + if opt.Cfg.DB.Type == "postgresql" { + if err = client.Exec(`SELECT setval('users_id_seq', (SELECT MAX(id) FROM users))`).Error; err != nil { + return err + } + } + + log.Info("InitDatas: creat init users success") + } else { + ps := make(sqlType.NumSlice[Privilege], 0) + for _, item := range Privilege(0).All() { + ps = append(ps, item.(Privilege)) + } + if err = client.Model(&User{}).Where("id = ?", initUsers[0].Id). + Updates(map[string]any{ + "privileges": ps, + }).Error; err != nil { + return err + } + + log.Info("initDatas: update init users success") + } + } + + return nil +} diff --git a/internal/model/interface.go b/internal/model/interface.go new file mode 100644 index 0000000..eaae85a --- /dev/null +++ b/internal/model/interface.go @@ -0,0 +1,17 @@ +package model + +type Enum interface { + Value() int64 + Code() string + Label() string + + MarshalJSON() ([]byte, error) + + All() []Enum +} + +type OpLogger interface { + Enum + Render(content map[string]any) (string, error) + Template() string +} diff --git a/internal/model/oplog.go b/internal/model/oplog.go new file mode 100644 index 0000000..4ea176e --- /dev/null +++ b/internal/model/oplog.go @@ -0,0 +1,294 @@ +package model + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "github.com/spf13/cast" + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/html" + "html/template" + "time" + "ultone/internal/sqlType" +) + +var ( + FuncMap = template.FuncMap{ + "time_format": func(mil any, format string) string { + return time.UnixMilli(cast.ToInt64(mil)).Format(format) + }, + } +) + +var ( + _ OpLogger = (*OpLogType)(nil) +) + +type OpLogType uint64 + +const ( + OpLogTypeLogin OpLogType = iota + 1 + OpLogTypeLogout + OpLogTypeCreateUser + OpLogTypeUpdateUser + OpLogTypeDeleteUser + + // todo: 添加自己的操作日志 分类 +) + +func (o OpLogType) Value() int64 { + return int64(o) +} + +func (o OpLogType) Code() string { + switch o { + case OpLogTypeLogin: + return "login" + case OpLogTypeLogout: + return "logout" + case OpLogTypeCreateUser: + return "create_user" + case OpLogTypeUpdateUser: + return "update_user" + case OpLogTypeDeleteUser: + return "delete_user" + default: + return "unknown" + } +} + +func (o OpLogType) Label() string { + switch o { + case OpLogTypeLogin: + return "登入" + case OpLogTypeLogout: + return "登出" + case OpLogTypeCreateUser: + return "创建用户" + case OpLogTypeUpdateUser: + return "修改用户" + case OpLogTypeDeleteUser: + return "删除用户" + default: + return "未知" + } +} + +func (o OpLogType) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]any{ + "value": o.Value(), + "code": o.Code(), + "label": o.Label(), + }) +} + +func (o OpLogType) All() []Enum { + return []Enum{ + OpLogTypeLogin, + OpLogTypeLogout, + OpLogTypeCreateUser, + OpLogTypeUpdateUser, + OpLogTypeDeleteUser, + } +} + +func _trimHTML(v []byte) string { + return base64.StdEncoding.EncodeToString(v) +} + +var ( + _mini = minify.New() +) + +func init() { + _mini.AddFunc("text/html", html.Minify) +} + +func (o OpLogType) Render(content map[string]any) (string, error) { + var ( + err error + render *template.Template + buf bytes.Buffer + bs []byte + ) + + if render, err = template.New(o.Code()). + Funcs(FuncMap). + Parse(o.Template()); err != nil { + return "", err + } + + if err = render.Execute(&buf, content); err != nil { + return "", err + } + + if bs, err = _mini.Bytes("text/html", buf.Bytes()); err != nil { + return "", err + } + + return _trimHTML(bs), nil +} + +const ( + oplogTemplateLogin = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + 在 + {{ .ip }} + + 上 + + 登入 + + 了系统 +
+ ` + oplogTemplateLogout = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + 在 + {{ .ip }} + + 上 + + 登出 + + 了系统 +
+` + oplogTemplateCreateUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 创建 + + 了用户 + {{ .target_username }} + +
+` + oplogTemplateUpdateUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 编辑 + + 了用户 + {{ .target_username }} + +
+` + oplogTemplateDeleteUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 删除 + + 了用户 + {{ .target_username }} + +
+` +) + +func (o OpLogType) Template() string { + switch o { + case OpLogTypeLogin: + return oplogTemplateLogin + case OpLogTypeLogout: + return oplogTemplateLogout + case OpLogTypeCreateUser: + return oplogTemplateCreateUser + case OpLogTypeUpdateUser: + return oplogTemplateUpdateUser + case OpLogTypeDeleteUser: + return oplogTemplateDeleteUser + default: + return `
错误的日志类型
` + } +} + +type OpLog struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + + UserId uint64 `json:"user_id" gorm:"column:user_id"` + Username string `json:"username" gorm:"column:username;varchar(128)"` + Type OpLogType `json:"type" gorm:"column:type;type:varchar(128)"` + Content sqlType.JSONB `json:"content" gorm:"column:content;type:jsonb"` + HTML string `json:"html" gorm:"-"` +} diff --git a/internal/model/privilege.go b/internal/model/privilege.go new file mode 100644 index 0000000..49c046a --- /dev/null +++ b/internal/model/privilege.go @@ -0,0 +1,61 @@ +package model + +import "encoding/json" + +type Privilege uint64 + +type _privilege struct { + Value int64 `json:"value"` + Code string `json:"code"` + Label string `json:"label"` +} + +const ( + PrivilegeUserManage Privilege = iota + 1 + PrivilegeOpLog +) + +func (p Privilege) Value() int64 { + return int64(p) +} + +func (p Privilege) Code() string { + switch p { + case PrivilegeUserManage: + return "user_manage" + case PrivilegeOpLog: + return "oplog" + default: + return "unknown" + } +} + +func (p Privilege) Label() string { + switch p { + case PrivilegeUserManage: + return "用户管理" + case PrivilegeOpLog: + return "操作日志" + default: + return "未知" + } +} + +func (p Privilege) MarshalJSON() ([]byte, error) { + _p := &_privilege{ + Value: int64(p), + Code: p.Code(), + Label: p.Label(), + } + + return json.Marshal(_p) +} + +func (p Privilege) All() []Enum { + return []Enum{ + PrivilegeUserManage, + PrivilegeOpLog, + } +} + +var _ Enum = (*Privilege)(nil) diff --git a/internal/model/role.go b/internal/model/role.go new file mode 100644 index 0000000..e0f78f8 --- /dev/null +++ b/internal/model/role.go @@ -0,0 +1,85 @@ +package model + +import ( + "encoding/json" + "gorm.io/gorm" + "ultone/internal/opt" +) + +type _role struct { + Value uint8 `json:"value"` + Code string `json:"code"` + Label string `json:"label"` +} + +type Role uint8 + +var _ Enum = Role(0) + +func (u Role) MarshalJSON() ([]byte, error) { + m := _role{ + Value: uint8(u), + Code: u.Code(), + Label: u.Label(), + } + return json.Marshal(m) +} + +const ( + RoleRoot Role = 255 + RoleAdmin Role = 254 + RoleUser Role = 100 +) + +func (u Role) Code() string { + switch u { + case RoleRoot: + return "root" + case RoleAdmin: + return "admin" + case RoleUser: + return "user" + default: + return "unknown" + } +} + +func (u Role) Label() string { + switch u { + case RoleRoot: + return "根用户" + case RoleAdmin: + return "管理员" + case RoleUser: + return "用户" + default: + return "未知" + } +} + +func (u Role) Value() int64 { + return int64(u) +} + +func (u Role) All() []Enum { + return []Enum{ + RoleAdmin, + RoleUser, + } +} + +func (u Role) Where(db *gorm.DB) *gorm.DB { + if opt.RoleMustLess { + return db.Where("users.role < ?", u.Value()) + } else { + return db.Where("users.role <= ?", u.Value()) + } +} + +func (u Role) CanOP(op *User) bool { + if opt.RoleMustLess { + return op.Role > u + } + + return op.Role >= u +} diff --git a/internal/model/user.go b/internal/model/user.go new file mode 100644 index 0000000..cfe78f1 --- /dev/null +++ b/internal/model/user.go @@ -0,0 +1,226 @@ +package model + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/golang-jwt/jwt/v5" + "github.com/loveuer/nf/nft/log" + "github.com/samber/lo" + "github.com/spf13/cast" + "strings" + "time" + "ultone/internal/opt" + "ultone/internal/sqlType" + "ultone/internal/tool" +) + +var ( + initUsers = []*User{ + { + Id: 1, + Username: "admin", + Password: tool.NewPassword("123456"), + Nickname: "admin", + Role: RoleAdmin, + Privileges: lo.Map(Privilege(0).All(), func(item Enum, index int) Privilege { + return item.(Privilege) + }), + CreatedById: 1, + CreatedByName: "admin", + ActiveAt: time.Now().UnixMilli(), + Deadline: time.Now().AddDate(100, 0, 0).UnixMilli(), + }, + } + + _ Enum = Status(0) +) + +type Status uint64 + +const ( + StatusNormal Status = iota + StatusFrozen +) + +func (s Status) Value() int64 { + return int64(s) +} + +func (s Status) Code() string { + switch s { + case StatusNormal: + return "normal" + case StatusFrozen: + return "frozen" + default: + return "unknown" + } +} + +func (s Status) Label() string { + switch s { + case StatusNormal: + return "正常" + case StatusFrozen: + return "冻结" + default: + return "异常" + } +} + +func (s Status) All() []Enum { + return []Enum{ + StatusNormal, + StatusFrozen, + } +} + +func (s Status) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]any{ + "value": s.Value(), + "code": s.Code(), + "label": s.Label(), + }) +} + +type User struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + + Username string `json:"username" gorm:"column:username;type:varchar(64);unique"` + Password string `json:"-" gorm:"column:password;type:varchar(256)"` + + Status Status `json:"status" gorm:"column:status;default:0"` + + Nickname string `json:"nickname" gorm:"column:nickname;type:varchar(64)"` + Comment string `json:"comment" gorm:"column:comment"` + + Role Role `json:"role" gorm:"column:role"` + Privileges sqlType.NumSlice[Privilege] `json:"privileges" gorm:"column:privileges;type:bigint[]"` + + CreatedById uint64 `json:"created_by_id" gorm:"column:created_by_id"` + CreatedByName string `json:"created_by_name" gorm:"column:created_by_name;type:varchar(64)"` + + ActiveAt int64 `json:"active_at" gorm:"column:active_at"` + Deadline int64 `json:"deadline" gorm:"column:deadline"` + + LoginAt int64 `json:"login_at" gorm:"-"` +} + +func (u *User) CheckStatus(mustOk bool) error { + switch u.Status { + case StatusNormal: + case StatusFrozen: + if mustOk { + return errors.New("用户被冻结") + } + default: + return errors.New("用户状态未知") + } + + return nil +} + +func (u *User) IsValid(mustOk bool) error { + now := time.Now() + + if now.UnixMilli() >= u.Deadline { + return errors.New("用户已过期") + } + + if now.UnixMilli() < u.ActiveAt { + return errors.New("用户未启用") + } + + if u.DeletedAt > 0 { + return errors.New("用户不存在") + } + + return u.CheckStatus(mustOk) +} + +func (u *User) JwtEncode() (token string, err error) { + + now := time.Now() + + jwtToken := jwt.NewWithClaims(jwt.SigningMethodHS512, jwt.MapClaims{ + "id": u.Id, + "username": u.Username, + "status": u.Status, + "deadline": u.Deadline, + "login_at": now.UnixMilli(), + }) + + if token, err = jwtToken.SignedString([]byte(opt.JwtTokenSecret)); err != nil { + err = fmt.Errorf("JwtEncode: jwt token signed secret err: %v", err) + log.Error(err.Error()) + return "", nil + } + + return +} + +func (u *User) FromJwt(token string) *User { + var ( + ok bool + err error + pt *jwt.Token + claims jwt.MapClaims + ) + + token = strings.TrimPrefix(token, "Bearer ") + + if pt, err = jwt.Parse(token, func(t *jwt.Token) (interface{}, error) { + if _, ok = t.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", t.Header["alg"]) + } + + return []byte(opt.JwtTokenSecret), nil + }); err != nil { + log.Error("jwt parse err: %v", err) + return nil + } + + if !pt.Valid { + log.Warn("parsed jwt invalid") + return nil + } + + if claims, ok = pt.Claims.(jwt.MapClaims); !ok { + log.Error("convert jwt claims err") + return nil + } + + u.Id = cast.ToUint64(claims["user_id"]) + u.Username = cast.ToString(claims["username"]) + u.Status = Status(cast.ToInt64(claims["status"])) + u.Deadline = cast.ToInt64(claims["deadline"]) + u.LoginAt = cast.ToInt64(claims["login_at"]) + + return u +} + +func (u User) MarshalBinary() ([]byte, error) { + return json.Marshal(map[string]any{ + "id": u.Id, + "created_at": u.CreatedAt, + "updated_at": u.UpdatedAt, + "deleted_at": u.DeletedAt, + "username": u.Username, + "status": u.Status.Value(), + "nickname": u.Nickname, + "comment": u.Comment, + "role": uint8(u.Role), + "privileges": lo.Map(u.Privileges, func(item Privilege, index int) int64 { + return item.Value() + }), + "created_by_id": u.CreatedById, + "created_by_name": u.CreatedByName, + "active_at": u.ActiveAt, + "deadline": u.Deadline, + "login_at": u.LoginAt, + }) +} diff --git a/internal/opt/opt.go b/internal/opt/opt.go new file mode 100644 index 0000000..cd16e11 --- /dev/null +++ b/internal/opt/opt.go @@ -0,0 +1,78 @@ +package opt + +import ( + "encoding/json" + "fmt" + "github.com/loveuer/nf/nft/log" + "os" + "ultone/internal/tool" +) + +type listen struct { + Http string `json:"http"` + Grpc string `json:"grpc"` + Unix string `json:"unix"` +} + +type db struct { + Type string `json:"-"` // postgres, mysql, sqlite + Uri string `json:"uri"` +} + +type cache struct { + Uri string `json:"uri"` +} + +type es struct { + Uri string `json:"uri"` + Index struct { + Staff string `json:"staff"` + } `json:"index"` +} + +type Nebula struct { + Uri string `json:"uri"` + Username string `json:"username"` + Password string `json:"password"` + Space string `json:"space"` +} + +type config struct { + Name string `json:"name"` + Listen listen `json:"listen"` + DB db `json:"db"` + Cache cache `json:"cache"` + ES es `json:"es"` + Nebula Nebula `json:"nebula"` +} + +var ( + Debug bool + Cfg = &config{} +) + +func Init(filename string) error { + + var ( + err error + bs []byte + ) + + log.Info("opt.Init: start reading config file: %s", filename) + + if bs, err = os.ReadFile(filename); err != nil { + return fmt.Errorf("opt.Init: read config file=%s err=%v", filename, err) + } + + if err = json.Unmarshal(bs, Cfg); err != nil { + return fmt.Errorf("opt.Init: json marshal config=%s err=%v", string(bs), err) + } + + if Debug { + log.SetLogLevel(log.LogLevelDebug) + } + + tool.TablePrinter(Cfg) + + return nil +} diff --git a/internal/opt/var.go b/internal/opt/var.go new file mode 100644 index 0000000..e08e2b0 --- /dev/null +++ b/internal/opt/var.go @@ -0,0 +1,46 @@ +package opt + +import "time" + +const ( + // todo: 可以替换自己生生成的 secret + JwtTokenSecret = "7^D+UW3BPB2Mnz)bY3uVrAUyv&dj8Kdz" + + // todo: 是否打开 gorm 的 debug 打印 (开发和 dev 环境时可以打开) + DBDebug = true + + // todo: 是否加载默认的前端用户管理界面 + EnableFront = false + + // todo: 同一个账号是否可以多 client 登录 + MultiLogin = false + + // todo: 用户量不大的情况, 并没有缓存用户具体信息, 如果需要可以打开 + EnableUserCache = true + + // todo: 缓存时, key 的前缀 + CachePrefix = "ultone" + + // todo: 登录颁发的 cookie 的 name + CookieName = "utlone-token" + + // todo: 用户列表,日志列表 size 参数 + DefaultSize, MaxSize = 20, 200 + + // todo: 操作用户时, role 相等时能否操作: 包括 列表, 能否新建,修改,删除同样 role 的用户 + RoleMustLess = false + + // todo: 通过 c.Local() 存入 oplog 时的 key 值 + OpLogLocalKey = "oplog" + + // todo: 操作日志 最多延迟多少秒写入(最多缓存多少秒的日志,然后 bulk 写入) + OpLogWriteDurationSecond = 5 + + LocalTraceKey = "X-Trace" + LocalShortTraceKey = "X-Short-Trace" +) + +var ( + // todo: 颁发的 token, (cookie) 在缓存中存在的时间 (每次请求该时间也会被刷新) + TokenTimeout = time.Duration(3600*12) * time.Second +) diff --git a/internal/sqlType/err.go b/internal/sqlType/err.go new file mode 100644 index 0000000..d1195e0 --- /dev/null +++ b/internal/sqlType/err.go @@ -0,0 +1,9 @@ +package sqlType + +import "errors" + +var ( + ErrConvertScanVal = errors.New("convert scan val to str err") + ErrInvalidScanVal = errors.New("scan val invalid") + ErrConvertVal = errors.New("convert err") +) diff --git a/internal/sqlType/jsonb.go b/internal/sqlType/jsonb.go new file mode 100644 index 0000000..ace1417 --- /dev/null +++ b/internal/sqlType/jsonb.go @@ -0,0 +1,76 @@ +package sqlType + +import ( + "database/sql/driver" + "encoding/json" + + "github.com/jackc/pgtype" +) + +type JSONB struct { + Val pgtype.JSONB + Valid bool +} + +func NewJSONB(v interface{}) JSONB { + j := new(JSONB) + j.Val = pgtype.JSONB{} + if err := j.Val.Set(v); err == nil { + j.Valid = true + return *j + } + + return *j +} + +func (j *JSONB) Set(value interface{}) error { + if err := j.Val.Set(value); err != nil { + j.Valid = false + return err + } + + j.Valid = true + + return nil +} + +func (j *JSONB) Bind(model interface{}) error { + return j.Val.AssignTo(model) +} + +func (j *JSONB) Scan(value interface{}) error { + j.Val = pgtype.JSONB{} + if value == nil { + j.Valid = false + return nil + } + + j.Valid = true + + return j.Val.Scan(value) +} + +func (j JSONB) Value() (driver.Value, error) { + if j.Valid { + return j.Val.Value() + } + + return nil, nil +} + +func (j JSONB) MarshalJSON() ([]byte, error) { + if j.Valid { + return j.Val.MarshalJSON() + } + + return json.Marshal(nil) +} + +func (j *JSONB) UnmarshalJSON(b []byte) error { + if string(b) == "null" { + j.Valid = false + return j.Val.UnmarshalJSON(b) + } + + return j.Val.UnmarshalJSON(b) +} diff --git a/internal/sqlType/nullStr.go b/internal/sqlType/nullStr.go new file mode 100644 index 0000000..a7df3cf --- /dev/null +++ b/internal/sqlType/nullStr.go @@ -0,0 +1,42 @@ +package sqlType + +import ( + "database/sql" + "encoding/json" +) + +// type NullString struct { +// sql.NullString +// } + +type NullString struct{ sql.NullString } + +func NewNullString(val string) NullString { + if val == "" { + return NullString{} + } + + return NullString{sql.NullString{Valid: true, String: val}} +} + +func (ns NullString) MarshalJSON() ([]byte, error) { + if !ns.Valid { + return json.Marshal(nil) + } + + return json.Marshal(ns.String) +} + +func (ns *NullString) UnmarshalJSON(data []byte) error { + if string(data) == "null" { + ns.Valid = false + return nil + } + + if err := json.Unmarshal(data, &ns.String); err != nil { + ns.Valid = true + return err + } + + return nil +} diff --git a/internal/sqlType/set.go b/internal/sqlType/set.go new file mode 100644 index 0000000..03812b0 --- /dev/null +++ b/internal/sqlType/set.go @@ -0,0 +1,53 @@ +package sqlType + +import "encoding/json" + +type Set map[string]struct{} + +func (s Set) MarshalJSON() ([]byte, error) { + array := make([]string, 0) + for name := range s { + array = append(array, name) + } + + return json.Marshal(array) +} + +func (s *Set) UnmarshalJSON(b []byte) error { + array := make([]string, 0) + if err := json.Unmarshal(b, &array); err != nil { + return err + } + + set := make(map[string]struct{}) + + for _, name := range array { + set[name] = struct{}{} + } + + *s = set + return nil +} + +func (s Set) ToStringSlice() []string { + var ( + result = make([]string, 0, len(s)) + ) + + for key := range s { + result = append(result, key) + } + + return result +} + +func (s *Set) FromStringSlice(ss *[]string) { + if s == nil { + m := make(Set) + s = &m + } + + for idx := range *(ss) { + (*s)[(*ss)[idx]] = struct{}{} + } +} diff --git a/internal/sqlType/strSlice.go b/internal/sqlType/strSlice.go new file mode 100644 index 0000000..05d7875 --- /dev/null +++ b/internal/sqlType/strSlice.go @@ -0,0 +1,109 @@ +package sqlType + +import ( + "bytes" + "database/sql/driver" + "encoding/json" +) + +type StrSlice []string + +func (s *StrSlice) Scan(val interface{}) error { + + str, ok := val.(string) + if !ok { + return ErrConvertScanVal + } + + if len(str) < 2 { + return nil + } + + bs := make([]byte, 0, 128) + bss := make([]byte, 0, 2*len(str)) + + quoteCount := 0 + + for idx := 1; idx < len(str)-1; idx++ { + // 44: , 92: \ 34: " + quote := str[idx] + switch quote { + case 44: + if quote == 44 && str[idx-1] != 92 && quoteCount == 0 { + if len(bs) > 0 { + if !(bs[0] == 34 && bs[len(bs)-1] == 34) { + bs = append([]byte{34}, bs...) + bs = append(bs, 34) + } + + bss = append(bss, bs...) + bss = append(bss, 44) + } + bs = bs[:0] + } else { + bs = append(bs, quote) + } + case 34: + if str[idx-1] != 92 { + quoteCount = (quoteCount + 1) % 2 + } + bs = append(bs, quote) + default: + bs = append(bs, quote) + } + + //bs = append(bs, str[idx]) + } + + if len(bs) > 0 { + if !(bs[0] == 34 && bs[len(bs)-1] == 34) { + bs = append([]byte{34}, bs...) + bs = append(bs, 34) + } + + bss = append(bss, bs...) + } else { + if len(bss) > 2 { + bss = bss[:len(bss)-2] + } + } + + bss = append([]byte{'['}, append(bss, ']')...) + + if err := json.Unmarshal(bss, s); err != nil { + return err + } + + return nil +} + +func (s StrSlice) Value() (driver.Value, error) { + if s == nil { + return "{}", nil + } + + if len(s) == 0 { + return "{}", nil + } + + buf := &bytes.Buffer{} + + encoder := json.NewEncoder(buf) + encoder.SetEscapeHTML(false) + + if err := encoder.Encode(s); err != nil { + return "{}", err + } + + bs := buf.Bytes() + + bs[0] = '{' + + if bs[len(bs)-1] == 10 { + bs = bs[:len(bs)-1] + } + + bs[len(bs)-1] = '}' + + return string(bs), nil +} diff --git a/internal/sqlType/uint64Slice.go b/internal/sqlType/uint64Slice.go new file mode 100644 index 0000000..7bba191 --- /dev/null +++ b/internal/sqlType/uint64Slice.go @@ -0,0 +1,71 @@ +package sqlType + +import ( + "database/sql/driver" + "fmt" + "strconv" + "strings" + + "github.com/spf13/cast" +) + +type NumSlice[T ~int | ~int64 | ~uint | ~uint64] []T + +func (n *NumSlice[T]) Scan(val interface{}) error { + str, ok := val.(string) + if !ok { + return ErrConvertScanVal + } + + length := len(str) + + if length <= 0 { + *n = make(NumSlice[T], 0) + return nil + } + + if str[0] != '{' || str[length-1] != '}' { + return ErrInvalidScanVal + } + + str = str[1 : length-1] + if len(str) == 0 { + *n = make(NumSlice[T], 0) + return nil + } + + numStrs := strings.Split(str, ",") + nums := make([]T, len(numStrs)) + + for idx := range numStrs { + num, err := cast.ToInt64E(strings.TrimSpace(numStrs[idx])) + if err != nil { + return fmt.Errorf("%w: can't convert to %T", ErrConvertVal, T(0)) + } + + nums[idx] = T(num) + } + + *n = nums + + return nil +} + +func (n NumSlice[T]) Value() (driver.Value, error) { + if n == nil { + return "{}", nil + } + + if len(n) == 0 { + return "{}", nil + } + + ss := make([]string, 0, len(n)) + for idx := range n { + ss = append(ss, strconv.Itoa(int(n[idx]))) + } + + s := strings.Join(ss, ", ") + + return fmt.Sprintf("{%s}", s), nil +} diff --git a/internal/tool/ctx.go b/internal/tool/ctx.go new file mode 100644 index 0000000..82242a3 --- /dev/null +++ b/internal/tool/ctx.go @@ -0,0 +1,38 @@ +package tool + +import ( + "context" + "time" +) + +func Timeout(seconds ...int) (ctx context.Context) { + var ( + duration time.Duration + ) + + if len(seconds) > 0 && seconds[0] > 0 { + duration = time.Duration(seconds[0]) * time.Second + } else { + duration = time.Duration(30) * time.Second + } + + ctx, _ = context.WithTimeout(context.Background(), duration) + + return +} + +func TimeoutCtx(ctx context.Context, seconds ...int) context.Context { + var ( + duration time.Duration + ) + + if len(seconds) > 0 && seconds[0] > 0 { + duration = time.Duration(seconds[0]) * time.Second + } else { + duration = time.Duration(30) * time.Second + } + + nctx, _ := context.WithTimeout(ctx, duration) + + return nctx +} diff --git a/internal/tool/human.go b/internal/tool/human.go new file mode 100644 index 0000000..2c7ce71 --- /dev/null +++ b/internal/tool/human.go @@ -0,0 +1,24 @@ +package tool + +import "fmt" + +func HumanDuration(nano int64) string { + duration := float64(nano) + unit := "ns" + if duration >= 1000 { + duration /= 1000 + unit = "us" + } + + if duration >= 1000 { + duration /= 1000 + unit = "ms" + } + + if duration >= 1000 { + duration /= 1000 + unit = " s" + } + + return fmt.Sprintf("%6.2f%s", duration, unit) +} diff --git a/internal/tool/must.go b/internal/tool/must.go new file mode 100644 index 0000000..0615f8d --- /dev/null +++ b/internal/tool/must.go @@ -0,0 +1,11 @@ +package tool + +import "github.com/loveuer/nf/nft/log" + +func Must(errs ...error) { + for _, err := range errs { + if err != nil { + log.Panic(err.Error()) + } + } +} diff --git a/internal/tool/password.go b/internal/tool/password.go new file mode 100644 index 0000000..c2d1a17 --- /dev/null +++ b/internal/tool/password.go @@ -0,0 +1,84 @@ +package tool + +import ( + "crypto/sha256" + "encoding/hex" + "errors" + "fmt" + "github.com/loveuer/nf/nft/log" + "golang.org/x/crypto/pbkdf2" + "regexp" + "strconv" + "strings" +) + +const ( + EncryptHeader string = "pbkdf2:sha256" // 用户密码加密 +) + +func NewPassword(password string) string { + return EncryptPassword(password, RandomString(8), int(RandomInt(50000)+100000)) +} + +func ComparePassword(in, db string) bool { + strs := strings.Split(db, "$") + if len(strs) != 3 { + log.Error("password in db invalid: %s", db) + return false + } + + encs := strings.Split(strs[0], ":") + if len(encs) != 3 { + log.Error("password in db invalid: %s", db) + return false + } + + encIteration, err := strconv.Atoi(encs[2]) + if err != nil { + log.Error("password in db invalid: %s, convert iter err: %s", db, err) + return false + } + + return EncryptPassword(in, strs[1], encIteration) == db +} + +func EncryptPassword(password, salt string, iter int) string { + hash := pbkdf2.Key([]byte(password), []byte(salt), iter, 32, sha256.New) + encrypted := hex.EncodeToString(hash) + return fmt.Sprintf("%s:%d$%s$%s", EncryptHeader, iter, salt, encrypted) +} + +func CheckPassword(password string) error { + if len(password) < 8 || len(password) > 32 { + return errors.New("密码长度不符合") + } + + var ( + err error + match bool + patternList = []string{`[0-9]+`, `[a-z]+`, `[A-Z]+`, `[!@#%]+`} //, `[~!@#$%^&*?_-]+`} + matchAccount = 0 + tips = []string{"缺少数字", "缺少小写字母", "缺少大写字母", "缺少'!@#%'"} + locktips = make([]string, 0) + ) + + for idx, pattern := range patternList { + match, err = regexp.MatchString(pattern, password) + if err != nil { + log.Warn("regex match string err, reg_str: %s, err: %v", pattern, err) + return errors.New("密码强度不够") + } + + if match { + matchAccount++ + } else { + locktips = append(locktips, tips[idx]) + } + } + + if matchAccount < 3 { + return fmt.Errorf("密码强度不够, 可能 %s", strings.Join(locktips, ", ")) + } + + return nil +} diff --git a/internal/tool/password_test.go b/internal/tool/password_test.go new file mode 100644 index 0000000..aabd667 --- /dev/null +++ b/internal/tool/password_test.go @@ -0,0 +1,11 @@ +package tool + +import "testing" + +func TestEncPassword(t *testing.T) { + password := "123456" + + result := EncryptPassword(password, RandomString(8), 50000) + + t.Logf("sum => %s", result) +} diff --git a/internal/tool/random.go b/internal/tool/random.go new file mode 100644 index 0000000..266cb4c --- /dev/null +++ b/internal/tool/random.go @@ -0,0 +1,54 @@ +package tool + +import ( + "crypto/rand" + "math/big" +) + +var ( + letters = []byte("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + letterNum = []byte("0123456789") + letterLow = []byte("abcdefghijklmnopqrstuvwxyz") + letterCap = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ") + letterSyb = []byte("!@#$%^&*()_+-=") +) + +func RandomInt(max int64) int64 { + num, _ := rand.Int(rand.Reader, big.NewInt(max)) + return num.Int64() +} + +func RandomString(length int) string { + result := make([]byte, length) + for i := 0; i < length; i++ { + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters)))) + result[i] = letters[num.Int64()] + } + return string(result) +} + +func RandomPassword(length int, withSymbol bool) string { + result := make([]byte, length) + kind := 3 + if withSymbol { + kind++ + } + + for i := 0; i < length; i++ { + switch i % kind { + case 0: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterNum)))) + result[i] = letterNum[num.Int64()] + case 1: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterLow)))) + result[i] = letterLow[num.Int64()] + case 2: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterCap)))) + result[i] = letterCap[num.Int64()] + case 3: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterSyb)))) + result[i] = letterSyb[num.Int64()] + } + } + return string(result) +} diff --git a/internal/tool/table.go b/internal/tool/table.go new file mode 100644 index 0000000..837cab1 --- /dev/null +++ b/internal/tool/table.go @@ -0,0 +1,117 @@ +package tool + +import ( + "encoding/json" + "fmt" + "github.com/jedib0t/go-pretty/v6/table" + "github.com/loveuer/nf/nft/log" + "io" + "os" + "reflect" + "strings" +) + +func TablePrinter(data any, writers ...io.Writer) { + var w io.Writer = os.Stdout + if len(writers) > 0 && writers[0] != nil { + w = writers[0] + } + + t := table.NewWriter() + structPrinter(t, "", data) + _, _ = fmt.Fprintln(w, t.Render()) +} + +func structPrinter(w table.Writer, prefix string, item any) { +Start: + rv := reflect.ValueOf(item) + if rv.IsZero() { + return + } + + for rv.Type().Kind() == reflect.Pointer { + rv = rv.Elem() + } + + switch rv.Type().Kind() { + case reflect.Invalid, + reflect.Uintptr, + reflect.Chan, + reflect.Func, + reflect.UnsafePointer: + case reflect.Bool, + reflect.Int, + reflect.Int8, + reflect.Int16, + reflect.Int32, + reflect.Int64, + reflect.Uint, + reflect.Uint8, + reflect.Uint16, + reflect.Uint32, + reflect.Uint64, + reflect.Float32, + reflect.Float64, + reflect.Complex64, + reflect.Complex128, + reflect.Interface, + reflect.String: + w.AppendRow(table.Row{strings.TrimPrefix(prefix, "."), rv.Interface()}) + case reflect.Array, reflect.Slice: + for i := 0; i < rv.Len(); i++ { + p := strings.Join([]string{prefix, fmt.Sprintf("[%d]", i)}, ".") + structPrinter(w, p, rv.Index(i).Interface()) + } + case reflect.Map: + for _, k := range rv.MapKeys() { + structPrinter(w, fmt.Sprintf("%s.{%v}", prefix, k), rv.MapIndex(k).Interface()) + } + case reflect.Pointer: + goto Start + case reflect.Struct: + for i := 0; i < rv.NumField(); i++ { + p := fmt.Sprintf("%s.%s", prefix, rv.Type().Field(i).Name) + field := rv.Field(i) + + //log.Debug("TablePrinter: prefix: %s, field: %v", p, rv.Field(i)) + + if !field.CanInterface() { + return + } + + structPrinter(w, p, field.Interface()) + } + } +} + +func TableMapPrinter(data []byte) { + m := make(map[string]any) + if err := json.Unmarshal(data, &m); err != nil { + log.Warn(err.Error()) + return + } + + t := table.NewWriter() + addRow(t, "", m) + fmt.Println(t.Render()) +} + +func addRow(w table.Writer, prefix string, m any) { + rv := reflect.ValueOf(m) + switch rv.Type().Kind() { + case reflect.Map: + for _, k := range rv.MapKeys() { + key := k.String() + if prefix != "" { + key = strings.Join([]string{prefix, k.String()}, ".") + } + addRow(w, key, rv.MapIndex(k).Interface()) + } + case reflect.Slice, reflect.Array: + for i := 0; i < rv.Len(); i++ { + addRow(w, fmt.Sprintf("%s[%d]", prefix, i), rv.Index(i).Interface()) + } + default: + w.AppendRow(table.Row{prefix, m}) + } +} diff --git a/internal/tool/tools.go b/internal/tool/tools.go new file mode 100644 index 0000000..521cba8 --- /dev/null +++ b/internal/tool/tools.go @@ -0,0 +1,19 @@ +package tool + +import "cmp" + +func Min[T cmp.Ordered](a, b T) T { + if a <= b { + return a + } + + return b +} + +func Max[T cmp.Ordered](a, b T) T { + if a >= b { + return a + } + + return b +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..c9e67fa --- /dev/null +++ b/main.go @@ -0,0 +1,22 @@ +package main + +import ( + "context" + "github.com/loveuer/nf/nft/log" + "os/signal" + "syscall" + "ultone/internal/cmd" + "ultone/internal/tool" +) + +func main() { + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + defer cancel() + + if err := cmd.Execute(ctx); err != nil { + log.Error("cmd.Execute: err=%v", err) + } + + log.Warn("received quit signal...(2s)") + <-tool.Timeout(2).Done() +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..529a7e8 --- /dev/null +++ b/readme.md @@ -0,0 +1,66 @@ +# utl-one: utl all in one + +### Usage + +#### 第一步: 克隆项目 + +- 1. `git clone -b master --depth 1 https://github.com/loveuer/ultone.git {your_project_name}` + +- 2. `cd {your_project_name} && rm -rf .git && git init` + + +#### 第二步: 设置为你自己的项目名称 + +- 1. `go mod edit -module {your_project_name}` + + - 2. `修改 go 文件中的 module 名称` + * `Windows 下使用 powershell` + ```psh + $NEW_MODULE_NAME = "{your_project_name}" + $OLD_MODULE = "ultone" + + Get-ChildItem -Path . -Filter '*.go' -Recurse | ForEach-Object { + $content = Get-Content -Path $_.FullName + $updatedContent = $content -replace $OLD_MODULE, $NEW_MODULE_NAME + $updatedContent | Set-Content -Path $filePath + } + ``` + + * `MacOS 下` + ```sh + find . -type f -name '*.go' -exec sed -i '' -e 's/ultone/{your_project_name}/g' {} \; + ``` + * `Linux 下` + ```sh + find . -type f -name '*.go' -exec sed -i -e 's,ultone,{your_project_name},g' {} \; + ``` + +- 3. `go mod tidy` + +- 4. 初始账号: `admin`, 初始密码: `123456` + +### Setting + +#### 仔细查看项目中的 todo + +#### 仔细查看 opt.var 中的设置 + +#### SQL + +- sqlite: +- postgresql: +- mysql + +#### Cache + +- redis +- memory + +### Feature + +- 用户全功能模块 +- 操作日志 + +### Next + +- common user list (比如操作日志用户下拉) \ No newline at end of file