From 660326f71355b85e3102edc3508c969123bbac01 Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Tue, 7 Nov 2023 18:15:04 -0600 Subject: [PATCH] Add new build-webapp command and related scripts and containers. (#626) * Add new build-webapp command and related scripts and containers. --- .gitea/workflows/test-webapp.yml | 49 +++++++ stack_orchestrator/build/build_containers.py | 126 ++++++++++-------- stack_orchestrator/build/build_webapp.py | 76 +++++++++++ .../cerc-nextjs-base/Dockerfile | 55 ++++++++ .../cerc-nextjs-base/Dockerfile.webapp | 5 + .../container-build/cerc-nextjs-base/build.sh | 13 ++ .../scripts/apply-runtime-env.sh | 36 +++++ .../cerc-nextjs-base/scripts/build-app.sh | 63 +++++++++ .../cerc-nextjs-base/scripts/find-env.sh | 24 ++++ .../scripts/start-serving-app.sh | 13 ++ stack_orchestrator/main.py | 2 + tests/webapp-test/run-webapp-test.sh | 62 +++++++++ tests/webapp-test/test.before | 34 +++++ 13 files changed, 506 insertions(+), 52 deletions(-) create mode 100644 .gitea/workflows/test-webapp.yml create mode 100644 stack_orchestrator/build/build_webapp.py create mode 100644 stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile create mode 100644 stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile.webapp create mode 100755 stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh create mode 100755 stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh create mode 100755 stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh create mode 100755 stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/find-env.sh create mode 100755 stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh create mode 100755 tests/webapp-test/run-webapp-test.sh create mode 100644 tests/webapp-test/test.before diff --git a/.gitea/workflows/test-webapp.yml b/.gitea/workflows/test-webapp.yml new file mode 100644 index 00000000..9fbf84b2 --- /dev/null +++ b/.gitea/workflows/test-webapp.yml @@ -0,0 +1,49 @@ +name: Webapp Test + +on: + pull_request: + branches: '*' + push: + branches: + - main + - ci-test + paths-ignore: + - '.gitea/workflows/triggers/*' + +# Needed until we can incorporate docker startup into the executor container +env: + DOCKER_HOST: unix:///var/run/dind.sock + +jobs: + test: + name: "Run webapp test suite" + runs-on: ubuntu-latest + steps: + - name: "Clone project repository" + uses: actions/checkout@v3 + # At present the stock setup-python action fails on Linux/aarch64 + # Conditional steps below workaroud this by using deadsnakes for that case only + - name: "Install Python for ARM on Linux" + if: ${{ runner.arch == 'arm64' && runner.os == 'Linux' }} + uses: deadsnakes/action@v3.0.1 + with: + python-version: '3.8' + - name: "Install Python cases other than ARM on Linux" + if: ${{ ! (runner.arch == 'arm64' && runner.os == 'Linux') }} + uses: actions/setup-python@v4 + with: + python-version: '3.8' + - name: "Print Python version" + run: python3 --version + - name: "Install shiv" + run: pip install shiv + - name: "Generate build version file" + run: ./scripts/create_build_tag_file.sh + - name: "Build local shiv package" + run: ./scripts/build_shiv_package.sh + - name: Start dockerd # Also needed until we can incorporate into the executor + run: | + dockerd -H $DOCKER_HOST --userland-proxy=false & + sleep 5 + - name: "Run webapp tests" + run: ./tests/webapp-test/run-webapp-test.sh diff --git a/stack_orchestrator/build/build_containers.py b/stack_orchestrator/build/build_containers.py index c97a974f..5b2748cc 100644 --- a/stack_orchestrator/build/build_containers.py +++ b/stack_orchestrator/build/build_containers.py @@ -33,6 +33,73 @@ from stack_orchestrator.base import get_npm_registry_url # TODO: find a place for this # epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)" +def make_container_build_env(dev_root_path: str, + container_build_dir: str, + debug: bool, + force_rebuild: bool, + extra_build_args: str): + container_build_env = { + "CERC_NPM_REGISTRY_URL": get_npm_registry_url(), + "CERC_GO_AUTH_TOKEN": config("CERC_GO_AUTH_TOKEN", default=""), + "CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default=""), + "CERC_REPO_BASE_DIR": dev_root_path, + "CERC_CONTAINER_BASE_DIR": container_build_dir, + "CERC_HOST_UID": f"{os.getuid()}", + "CERC_HOST_GID": f"{os.getgid()}", + "DOCKER_BUILDKIT": config("DOCKER_BUILDKIT", default="0") + } + container_build_env.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {}) + container_build_env.update({"CERC_FORCE_REBUILD": "true"} if force_rebuild else {}) + container_build_env.update({"CERC_CONTAINER_EXTRA_BUILD_ARGS": extra_build_args} if extra_build_args else {}) + docker_host_env = os.getenv("DOCKER_HOST") + if docker_host_env: + container_build_env.update({"DOCKER_HOST": docker_host_env}) + + return container_build_env + + +def process_container(container, + container_build_dir: str, + container_build_env: dict, + dev_root_path: str, + quiet: bool, + verbose: bool, + dry_run: bool, + continue_on_error: bool, + ): + if not quiet: + print(f"Building: {container}") + build_dir = os.path.join(container_build_dir, container.replace("/", "-")) + build_script_filename = os.path.join(build_dir, "build.sh") + if verbose: + print(f"Build script filename: {build_script_filename}") + if os.path.exists(build_script_filename): + build_command = build_script_filename + else: + if verbose: + print(f"No script file found: {build_script_filename}, using default build script") + repo_dir = container.split('/')[1] + # TODO: make this less of a hack -- should be specified in some metadata somewhere + # Check if we have a repo for this container. If not, set the context dir to the container-build subdir + repo_full_path = os.path.join(dev_root_path, repo_dir) + repo_dir_or_build_dir = repo_full_path if os.path.exists(repo_full_path) else build_dir + build_command = os.path.join(container_build_dir, + "default-build.sh") + f" {container}:local {repo_dir_or_build_dir}" + if not dry_run: + if verbose: + print(f"Executing: {build_command} with environment: {container_build_env}") + build_result = subprocess.run(build_command, shell=True, env=container_build_env) + if verbose: + print(f"Return code is: {build_result.returncode}") + if build_result.returncode != 0: + print(f"Error running build for {container}") + if not continue_on_error: + print("FATAL Error: container build failed and --continue-on-error not set, exiting") + sys.exit(1) + else: + print("****** Container Build Error, continuing because --continue-on-error is set") + else: + print("Skipped") @click.command() @click.option('--include', help="only build these containers") @@ -83,61 +150,16 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args): if stack: print(f"Stack: {stack}") - # TODO: make this configurable - container_build_env = { - "CERC_NPM_REGISTRY_URL": get_npm_registry_url(), - "CERC_GO_AUTH_TOKEN": config("CERC_GO_AUTH_TOKEN", default=""), - "CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default=""), - "CERC_REPO_BASE_DIR": dev_root_path, - "CERC_CONTAINER_BASE_DIR": container_build_dir, - "CERC_HOST_UID": f"{os.getuid()}", - "CERC_HOST_GID": f"{os.getgid()}", - "DOCKER_BUILDKIT": config("DOCKER_BUILDKIT", default="0") - } - container_build_env.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {}) - container_build_env.update({"CERC_FORCE_REBUILD": "true"} if force_rebuild else {}) - container_build_env.update({"CERC_CONTAINER_EXTRA_BUILD_ARGS": extra_build_args} if extra_build_args else {}) - docker_host_env = os.getenv("DOCKER_HOST") - if docker_host_env: - container_build_env.update({"DOCKER_HOST": docker_host_env}) - - def process_container(container): - if not quiet: - print(f"Building: {container}") - build_dir = os.path.join(container_build_dir, container.replace("/", "-")) - build_script_filename = os.path.join(build_dir, "build.sh") - if verbose: - print(f"Build script filename: {build_script_filename}") - if os.path.exists(build_script_filename): - build_command = build_script_filename - else: - if verbose: - print(f"No script file found: {build_script_filename}, using default build script") - repo_dir = container.split('/')[1] - # TODO: make this less of a hack -- should be specified in some metadata somewhere - # Check if we have a repo for this container. If not, set the context dir to the container-build subdir - repo_full_path = os.path.join(dev_root_path, repo_dir) - repo_dir_or_build_dir = repo_full_path if os.path.exists(repo_full_path) else build_dir - build_command = os.path.join(container_build_dir, "default-build.sh") + f" {container}:local {repo_dir_or_build_dir}" - if not dry_run: - if verbose: - print(f"Executing: {build_command} with environment: {container_build_env}") - build_result = subprocess.run(build_command, shell=True, env=container_build_env) - if verbose: - print(f"Return code is: {build_result.returncode}") - if build_result.returncode != 0: - print(f"Error running build for {container}") - if not continue_on_error: - print("FATAL Error: container build failed and --continue-on-error not set, exiting") - sys.exit(1) - else: - print("****** Container Build Error, continuing because --continue-on-error is set") - else: - print("Skipped") + container_build_env = make_container_build_env(dev_root_path, + container_build_dir, + debug, + force_rebuild, + extra_build_args) for container in containers_in_scope: if include_exclude_check(container, include, exclude): - process_container(container) + process_container(container, container_build_dir, container_build_env, + dev_root_path, quiet, verbose, dry_run, continue_on_error) else: if verbose: print(f"Excluding: {container}") diff --git a/stack_orchestrator/build/build_webapp.py b/stack_orchestrator/build/build_webapp.py new file mode 100644 index 00000000..f4668c5d --- /dev/null +++ b/stack_orchestrator/build/build_webapp.py @@ -0,0 +1,76 @@ +# Copyright © 2022, 2023 Vulcanize + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# Builds webapp containers + +# env vars: +# CERC_REPO_BASE_DIR defaults to ~/cerc + +# TODO: display the available list of containers; allow re-build of either all or specific containers + +import os +from decouple import config +import click +from pathlib import Path +from stack_orchestrator.build import build_containers + + +@click.command() +@click.option('--base-container', default="cerc/nextjs-base") +@click.option('--source-repo', help="directory containing the webapp to build", required=True) +@click.option("--force-rebuild", is_flag=True, default=False, help="Override dependency checking -- always rebuild") +@click.option("--extra-build-args", help="Supply extra arguments to build") +@click.pass_context +def command(ctx, base_container, source_repo, force_rebuild, extra_build_args): + '''build the specified webapp container''' + + quiet = ctx.obj.quiet + verbose = ctx.obj.verbose + dry_run = ctx.obj.dry_run + debug = ctx.obj.debug + local_stack = ctx.obj.local_stack + stack = ctx.obj.stack + continue_on_error = ctx.obj.continue_on_error + + # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure + container_build_dir = Path(__file__).absolute().parent.parent.joinpath("data", "container-build") + + if local_stack: + dev_root_path = os.getcwd()[0:os.getcwd().rindex("stack-orchestrator")] + print(f'Local stack dev_root_path (CERC_REPO_BASE_DIR) overridden to: {dev_root_path}') + else: + dev_root_path = os.path.expanduser(config("CERC_REPO_BASE_DIR", default="~/cerc")) + + if not quiet: + print(f'Dev Root is: {dev_root_path}') + + # First build the base container. + container_build_env = build_containers.make_container_build_env(dev_root_path, container_build_dir, debug, + force_rebuild, extra_build_args) + + build_containers.process_container(base_container, container_build_dir, container_build_env, dev_root_path, quiet, + verbose, dry_run, continue_on_error) + + + # Now build the target webapp. We use the same build script, but with a different Dockerfile and work dir. + container_build_env["CERC_CONTAINER_BUILD_WORK_DIR"] = os.path.abspath(source_repo) + container_build_env["CERC_CONTAINER_BUILD_DOCKERFILE"] = os.path.join(container_build_dir, + base_container.replace("/", "-"), + "Dockerfile.webapp") + webapp_name = os.path.abspath(source_repo).split(os.path.sep)[-1] + container_build_env["CERC_CONTAINER_BUILD_TAG"] = f"cerc/{webapp_name}:local" + + build_containers.process_container(base_container, container_build_dir, container_build_env, dev_root_path, quiet, + verbose, dry_run, continue_on_error) diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile new file mode 100644 index 00000000..147cec29 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile @@ -0,0 +1,55 @@ +# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile +# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster +ARG VARIANT=18-bullseye +FROM node:${VARIANT} + +ARG USERNAME=node +ARG NPM_GLOBAL=/usr/local/share/npm-global + +# Add NPM global to PATH. +ENV PATH=${NPM_GLOBAL}/bin:${PATH} +# Prevents npm from printing version warnings +ENV NPM_CONFIG_UPDATE_NOTIFIER=false + +RUN \ + # Configure global npm install location, use group to adapt to UID/GID changes + if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \ + && usermod -a -G npm ${USERNAME} \ + && umask 0002 \ + && mkdir -p ${NPM_GLOBAL} \ + && touch /usr/local/etc/npmrc \ + && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \ + && chmod g+s ${NPM_GLOBAL} \ + && npm config -g set prefix ${NPM_GLOBAL} \ + && su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" \ + # Install eslint + && su ${USERNAME} -c "umask 0002 && npm install -g eslint" \ + && npm cache clean --force > /dev/null 2>&1 + +# [Optional] Uncomment this section to install additional OS packages. +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends jq gettext-base + +# [Optional] Uncomment if you want to install an additional version of node using nvm +# ARG EXTRA_NODE_VERSION=10 +# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" + +# We do this to get a yq binary from the published container, for the correct architecture we're building here +# COPY --from=docker.io/mikefarah/yq:latest /usr/bin/yq /usr/local/bin/yq + +COPY /scripts /scripts + +# [Optional] Uncomment if you want to install more global node modules +# RUN su node -c "npm install -g " + +# RUN mkdir -p /config +# COPY ./config.yml /config + +# Install simple web server for now (use nginx perhaps later) +# RUN yarn global add http-server + +# Expose port for http +EXPOSE 3000 + +# Default command sleeps forever so docker doesn't kill it +CMD ["/scripts/start-serving-app.sh"] diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile.webapp b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile.webapp new file mode 100644 index 00000000..f4b5d4d8 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile.webapp @@ -0,0 +1,5 @@ +FROM cerc/nextjs-base:local +WORKDIR /app +COPY . . +RUN rm -rf node_modules build .next* +RUN /scripts/build-app.sh /app diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh new file mode 100755 index 00000000..3cf5f7f4 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Build cerc/laconic-registry-cli + +source ${CERC_CONTAINER_BASE_DIR}/build-base.sh + +# See: https://stackoverflow.com/a/246128/1701505 +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +CERC_CONTAINER_BUILD_WORK_DIR=${CERC_CONTAINER_BUILD_WORK_DIR:-$SCRIPT_DIR} +CERC_CONTAINER_BUILD_DOCKERFILE=${CERC_CONTAINER_BUILD_DOCKERFILE:-$SCRIPT_DIR/Dockerfile} +CERC_CONTAINER_BUILD_TAG=${CERC_CONTAINER_BUILD_TAG:-cerc/nextjs-base:local} + +docker build -t $CERC_CONTAINER_BUILD_TAG ${build_command_args} -f $CERC_CONTAINER_BUILD_DOCKERFILE $CERC_CONTAINER_BUILD_WORK_DIR diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh new file mode 100755 index 00000000..ba1cd17d --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +WORK_DIR="${1:-./}" +SRC_DIR="${2:-.next}" +TRG_DIR="${3:-.next-r}" + +cd "${WORK_DIR}" || exit 1 + +rm -rf "$TRG_DIR" +mkdir -p "$TRG_DIR" +cp -rp "$SRC_DIR" "$TRG_DIR/" + +if [ -f ".env" ]; then + TMP_ENV=`mktemp` + declare -px > $TMP_ENV + set -a + source .env + source $TMP_ENV + set +a + rm -f $TMP_ENV +fi + +for f in $(find "$TRG_DIR" -regex ".*.[tj]sx?$" -type f | grep -v 'node_modules'); do + for e in $(cat "${f}" | tr -s '[:blank:]' '\n' | tr -s '[{},()]' '\n' | egrep -o '^"CERC_RUNTIME_ENV[^\"]+"$'); do + orig_name=$(echo -n "${e}" | sed 's/"//g') + cur_name=$(echo -n "${orig_name}" | sed 's/CERC_RUNTIME_ENV_//g') + cur_val=$(echo -n "\$${cur_name}" | envsubst) + esc_val=$(sed 's/[&/\]/\\&/g' <<< "$cur_val") + echo "$cur_name=$cur_val" + sed -i "s/$orig_name/$esc_val/g" $f + done +done diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh new file mode 100755 index 00000000..9277abc6 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +WORK_DIR="${1:-/app}" + +cd "${WORK_DIR}" || exit 1 + +cp next.config.js next.config.dist + +npm i -g js-beautify +js-beautify next.config.dist > next.config.js + +npm install + +CONFIG_LINES=$(wc -l next.config.js | awk '{ print $1 }') +MOD_EXPORTS_LINE=$(grep -n 'module.exports' next.config.js | cut -d':' -f1) + +head -$(( ${MOD_EXPORTS_LINE} - 1 )) next.config.js > next.config.js.1 + +cat > next.config.js.2 < { + a[v] = \`"CERC_RUNTIME_ENV_\${v.split(/\./).pop()}"\`; + return a; + }, {}); +} catch { + // If .env-list.json cannot be loaded, we are probably running in dev mode, so use process.env instead. + envMap = Object.keys(process.env).reduce((a, v) => { + if (v.startsWith('CERC_')) { + a[\`process.env.\${v}\`] = JSON.stringify(process.env[v]); + } + return a; + }, {}); +} +EOF + +grep 'module.exports' next.config.js > next.config.js.3 + +cat > next.config.js.4 < { + config.plugins.push(new webpack.DefinePlugin(envMap)); + return config; + }, +EOF + +tail -$(( ${CONFIG_LINES} - ${MOD_EXPORTS_LINE} + 1 )) next.config.js | grep -v 'process\.env\.' > next.config.js.5 + +cat next.config.js.* | js-beautify > next.config.js +rm next.config.js.* + +"${SCRIPT_DIR}/find-env.sh" "$(pwd)" > .env-list.json + +npm run build +rm .env-list.json \ No newline at end of file diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/find-env.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/find-env.sh new file mode 100755 index 00000000..0c0e87c9 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/find-env.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +WORK_DIR="${1:-./}" +TMPF=$(mktemp) + +cd "$WORK_DIR" || exit 1 + +for d in $(find . -maxdepth 1 -type d | grep -v '\./\.' | grep '/' | cut -d'/' -f2); do + egrep "/$d[/$]?" .gitignore >/dev/null 2>/dev/null + if [ $? -eq 0 ]; then + continue + fi + + for f in $(find "$d" -regex ".*.[tj]sx?$" -type f); do + cat "$f" | tr -s '[:blank:]' '\n' | tr -s '[{},()]' '\n' | egrep -o 'process.env.[A-Za-z0-9_]+' >> $TMPF + done +done + +cat $TMPF | sort -u | jq --raw-input . | jq --slurp . +rm -f $TMPF diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh new file mode 100755 index 00000000..abe72935 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +CERC_WEBAPP_FILES_DIR="${CERC_WEBAPP_FILES_DIR:-/app}" +cd "$CERC_WEBAPP_FILES_DIR" + +rm -rf .next-r +"$SCRIPT_DIR/apply-runtime-env.sh" "`pwd`" .next .next-r +npm start .next-r -p ${CERC_LISTEN_PORT:-3000} diff --git a/stack_orchestrator/main.py b/stack_orchestrator/main.py index ca1914e6..0b0585e0 100644 --- a/stack_orchestrator/main.py +++ b/stack_orchestrator/main.py @@ -19,6 +19,7 @@ from stack_orchestrator.command_types import CommandOptions from stack_orchestrator.repos import setup_repositories from stack_orchestrator.build import build_containers from stack_orchestrator.build import build_npms +from stack_orchestrator.build import build_webapp from stack_orchestrator.deploy import deploy from stack_orchestrator import version from stack_orchestrator.deploy import deployment @@ -48,6 +49,7 @@ def cli(ctx, stack, quiet, verbose, dry_run, local_stack, debug, continue_on_err cli.add_command(setup_repositories.command, "setup-repositories") cli.add_command(build_containers.command, "build-containers") cli.add_command(build_npms.command, "build-npms") +cli.add_command(build_webapp.command, "build-webapp") cli.add_command(deploy.command, "deploy") # deploy is an alias for deploy-system cli.add_command(deploy.command, "deploy-system") cli.add_command(deployment.command, "deployment") diff --git a/tests/webapp-test/run-webapp-test.sh b/tests/webapp-test/run-webapp-test.sh new file mode 100755 index 00000000..75c4cbd1 --- /dev/null +++ b/tests/webapp-test/run-webapp-test.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi +# Dump environment variables for debugging +echo "Environment variables:" +env +# Test basic stack-orchestrator webapp +echo "Running stack-orchestrator webapp test" +# Bit of a hack, test the most recent package +TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 ) +# Set a non-default repo dir +export CERC_REPO_BASE_DIR=~/stack-orchestrator-test/repo-base-dir +echo "Testing this package: $TEST_TARGET_SO" +echo "Test version command" +reported_version_string=$( $TEST_TARGET_SO version ) +echo "Version reported is: ${reported_version_string}" +echo "Cloning repositories into: $CERC_REPO_BASE_DIR" +rm -rf $CERC_REPO_BASE_DIR +mkdir -p $CERC_REPO_BASE_DIR +git clone https://git.vdb.to/cerc-io/test-progressive-web-app.git $CERC_REPO_BASE_DIR/test-progressive-web-app + +# Test webapp command execution +$TEST_TARGET_SO build-webapp --source-repo $CERC_REPO_BASE_DIR/test-progressive-web-app + +UUID=`uuidgen` + +set +e + +CONTAINER_ID=$(docker run -p 3000:3000 -d cerc/test-progressive-web-app:local) +sleep 3 +wget -O test.before -m http://localhost:3000 + +docker remove -f $CONTAINER_ID + +CONTAINER_ID=$(docker run -p 3000:3000 -e CERC_WEBAPP_DEBUG=$UUID -d cerc/test-progressive-web-app:local) +sleep 3 +wget -O test.after -m http://localhost:3000 + +docker remove -f $CONTAINER_ID + +echo "###########################################################################" +echo "" + +grep "$UUID" test.before > /dev/null +if [ $? -ne 1 ]; then + echo "BEFORE: FAILED" + exit 1 +else + echo "BEFORE: PASSED" +fi + +grep "`uuidgen`" test.after > /dev/null +if [ $? -ne 0 ]; then + echo "AFTER: FAILED" + exit 1 +else + echo "AFTER: PASSED" +fi + +exit 0 \ No newline at end of file diff --git a/tests/webapp-test/test.before b/tests/webapp-test/test.before new file mode 100644 index 00000000..e349f10d --- /dev/null +++ b/tests/webapp-test/test.before @@ -0,0 +1,34 @@ +Laconic Test PWA

Welcome to Laconic!

CONFIG1 has value: CERC_RUNTIME_ENV_CERC_TEST_WEBAPP_CONFIG1

CONFIG2 has value: CERC_RUNTIME_ENV_CERC_TEST_WEBAPP_CONFIG2

WEBAPP_DEBUG has value: CERC_RUNTIME_ENV_CERC_WEBAPP_DEBUG

body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.Home_container__d256j{min-height:100vh;padding:0 .5rem;flex-direction:column}.Home_container__d256j,.Home_main__VkIEL{display:flex;justify-content:center;align-items:center}.Home_main__VkIEL{padding:5rem 0;flex:1 1;flex-direction:column}.Home_footer__yFiaX{width:100%;height:100px;border-top:1px solid #eaeaea;display:flex;justify-content:center;align-items:center}.Home_footer__yFiaX img{margin-left:.5rem}.Home_footer__yFiaX a{display:flex;justify-content:center;align-items:center}.Home_title__hYX6j a{color:#0070f3;text-decoration:none}.Home_title__hYX6j a:active,.Home_title__hYX6j a:focus,.Home_title__hYX6j a:hover{text-decoration:underline}.Home_title__hYX6j{margin:0;line-height:1.15;font-size:4rem}.Home_description__uXNdx,.Home_title__hYX6j{text-align:center}.Home_description__uXNdx{line-height:1.5;font-size:1.5rem}.Home_code__VVrIr{background:#fafafa;border-radius:5px;padding:.75rem;font-size:1.1rem;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}.Home_grid__AVljO{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;max-width:800px;margin-top:3rem}.Home_card__E5spL{margin:1rem;flex-basis:45%;padding:1.5rem;text-align:left;color:inherit;text-decoration:none;border:1px solid #eaeaea;border-radius:10px;transition:color .15s ease,border-color .15s ease}.Home_card__E5spL:active,.Home_card__E5spL:focus,.Home_card__E5spL:hover{color:#0070f3;border-color:#0070f3}.Home_card__E5spL h3{margin:0 0 1rem;font-size:1.5rem}.Home_card__E5spL p{margin:0;font-size:1.25rem;line-height:1.5}.Home_logo__IOQAX{height:1em}@media (max-width:600px){.Home_grid__AVljO{width:100%;flex-direction:column}}!function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=function(t){return t&&t.Math==Math&&t},n=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t&&t)||Function("return this")(),o=function(t){try{return!!t()}catch(t){return!0}},i=!o(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}),a={}.propertyIsEnumerable,u=Object.getOwnPropertyDescriptor,s=u&&!a.call({1:2},1)?function(t){var e=u(this,t);return!!e&&e.enumerable}:a,c={f:s},f=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},l={}.toString,h=function(t){return l.call(t).slice(8,-1)},p="".split,d=o(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return"String"==h(t)?p.call(t,""):Object(t)}:Object,v=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},g=function(t){return d(v(t))},y=function(t){return"object"==typeof t?null!==t:"function"==typeof t},m=function(t,e){if(!y(t))return t;var r,n;if(e&&"function"==typeof(r=t.toString)&&!y(n=r.call(t)))return n;if("function"==typeof(r=t.valueOf)&&!y(n=r.call(t)))return n;if(!e&&"function"==typeof(r=t.toString)&&!y(n=r.call(t)))return n;throw TypeError("Can't convert object to primitive value")},b={}.hasOwnProperty,w=function(t,e){return b.call(t,e)},S=n.document,E=y(S)&&y(S.createElement),x=function(t){return E?S.createElement(t):{}},A=!i&&!o(function(){return 7!=Object.defineProperty(x("div"),"a",{get:function(){return 7}}).a}),O=Object.getOwnPropertyDescriptor,R={f:i?O:function(t,e){if(t=g(t),e=m(e,!0),A)try{return O(t,e)}catch(t){}if(w(t,e))return f(!c.f.call(t,e),t[e])}},j=function(t){if(!y(t))throw TypeError(String(t)+" is not an object");return t},P=Object.defineProperty,I={f:i?P:function(t,e,r){if(j(t),e=m(e,!0),j(r),A)try{return P(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},T=i?function(t,e,r){return I.f(t,e,f(1,r))}:function(t,e,r){return t[e]=r,t},k=function(t,e){try{T(n,t,e)}catch(r){n[t]=e}return e},L="__core-js_shared__",U=n[L]||k(L,{}),M=Function.toString;"function"!=typeof U.inspectSource&&(U.inspectSource=function(t){return M.call(t)});var _,N,C,F=U.inspectSource,B=n.WeakMap,D="function"==typeof B&&/native code/.test(F(B)),q=!1,z=e(function(t){(t.exports=function(t,e){return U[t]||(U[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})}),W=0,K=Math.random(),G=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++W+K).toString(36)},$=z("keys"),V=function(t){return $[t]||($[t]=G(t))},H={};if(D){var X=new(0,n.WeakMap),Y=X.get,J=X.has,Q=X.set;_=function(t,e){return Q.call(X,t,e),e},N=function(t){return Y.call(X,t)||{}},C=function(t){return J.call(X,t)}}else{var Z=V("state");H[Z]=!0,_=function(t,e){return T(t,Z,e),e},N=function(t){return w(t,Z)?t[Z]:{}},C=function(t){return w(t,Z)}}var tt,et={set:_,get:N,has:C,enforce:function(t){return C(t)?N(t):_(t,{})},getterFor:function(t){return function(e){var r;if(!y(e)||(r=N(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},rt=e(function(t){var e=et.get,r=et.enforce,o=String(String).split("String");(t.exports=function(t,e,i,a){var u=!!a&&!!a.unsafe,s=!!a&&!!a.enumerable,c=!!a&&!!a.noTargetGet;"function"==typeof i&&("string"!=typeof e||w(i,"name")||T(i,"name",e),r(i).source=o.join("string"==typeof e?e:"")),t!==n?(u?!c&&t[e]&&(s=!0):delete t[e],s?t[e]=i:T(t,e,i)):s?t[e]=i:k(e,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&e(this).source||F(this)})}),nt=n,ot=function(t){return"function"==typeof t?t:void 0},it=function(t,e){return arguments.length<2?ot(nt[t])||ot(n[t]):nt[t]&&nt[t][e]||n[t]&&n[t][e]},at=Math.ceil,ut=Math.floor,st=function(t){return isNaN(t=+t)?0:(t>0?ut:at)(t)},ct=Math.min,ft=function(t){return t>0?ct(st(t),9007199254740991):0},lt=Math.max,ht=Math.min,pt=function(t,e){var r=st(t);return r<0?lt(r+e,0):ht(r,e)},dt=function(t){return function(e,r,n){var o,i=g(e),a=ft(i.length),u=pt(n,a);if(t&&r!=r){for(;a>u;)if((o=i[u++])!=o)return!0}else for(;a>u;u++)if((t||u in i)&&i[u]===r)return t||u||0;return!t&&-1}},vt={includes:dt(!0),indexOf:dt(!1)},gt=vt.indexOf,yt=function(t,e){var r,n=g(t),o=0,i=[];for(r in n)!w(H,r)&&w(n,r)&&i.push(r);for(;e.length>o;)w(n,r=e[o++])&&(~gt(i,r)||i.push(r));return i},mt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],bt=mt.concat("length","prototype"),wt={f:Object.getOwnPropertyNames||function(t){return yt(t,bt)}},St={f:Object.getOwnPropertySymbols},Et=it("Reflect","ownKeys")||function(t){var e=wt.f(j(t)),r=St.f;return r?e.concat(r(t)):e},xt=function(t,e){for(var r=Et(e),n=I.f,o=R.f,i=0;i2?arguments[2]:void 0,u=Mt((void 0===a?n:pt(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:delete r[o],o+=s,i+=s;return r},Nt=!!Object.getOwnPropertySymbols&&!o(function(){return!String(Symbol())}),Ct=Nt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ft=z("wks"),Bt=n.Symbol,Dt=Ct?Bt:Bt&&Bt.withoutSetter||G,qt=function(t){return w(Ft,t)||(Ft[t]=Nt&&w(Bt,t)?Bt[t]:Dt("Symbol."+t)),Ft[t]},zt=Object.keys||function(t){return yt(t,mt)},Wt=i?Object.defineProperties:function(t,e){j(t);for(var r,n=zt(e),o=n.length,i=0;o>i;)I.f(t,r=n[i++],e[r]);return t},Kt=it("document","documentElement"),Gt=V("IE_PROTO"),$t=function(){},Vt=function(t){return"",a=a.removeChild(a.firstChild)):"string"==typeof o.is?a=z.createElement(i,{is:o.is}):(a=z.createElement(i),"select"===i&&(z=a,o.multiple?z.multiple=!0:o.size&&(z.size=o.size))):a=z.createElementNS(a,i),a[tD]=u,a[tR]=o,s(a,u,!1,!1),u.stateNode=a;e:{switch(z=vb(i,o),i){case"dialog":D("cancel",a),D("close",a),_=o;break;case"iframe":case"object":case"embed":D("load",a),_=o;break;case"video":case"audio":for(_=0;_le&&(u.flags|=128,o=!0,Ej(j,!1),u.lanes=4194304)}}else{if(!o){if(null!==(a=Mh(z))){if(u.flags|=128,o=!0,null!==(i=a.updateQueue)&&(u.updateQueue=i,u.flags|=4),Ej(j,!0),null===j.tail&&"hidden"===j.tailMode&&!z.alternate&&!t8)return S(u),null}else 2*eq()-j.renderingStartTime>le&&1073741824!==i&&(u.flags|=128,o=!0,Ej(j,!1),u.lanes=4194304)}j.isBackwards?(z.sibling=u.child,u.child=z):(null!==(i=j.last)?i.sibling=z:u.child=z,j.last=z)}if(null!==j.tail)return u=j.tail,j.rendering=u,j.tail=u.sibling,j.renderingStartTime=eq(),u.sibling=null,i=rv.current,G(rv,o?1&i|2:1&i),u;return S(u),null;case 22:case 23:return Ij(),o=null!==u.memoizedState,null!==a&&null!==a.memoizedState!==o&&(u.flags|=8192),o&&0!=(1&u.mode)?0!=(1073741824&r0)&&(S(u),6&u.subtreeFlags&&(u.flags|=8192)):S(u),null;case 24:case 25:return null}throw Error(p(156,u.tag))}function Jj(a,u){switch(wg(u),u.tag){case 1:return Zf(u.type)&&$f(),65536&(a=u.flags)?(u.flags=-65537&a|128,u):null;case 3:return Jh(),E(tQ),E(tA),Oh(),0!=(65536&(a=u.flags))&&0==(128&a)?(u.flags=-65537&a|128,u):null;case 5:return Lh(u),null;case 13:if(E(rv),null!==(a=u.memoizedState)&&null!==a.dehydrated){if(null===u.alternate)throw Error(p(340));Ig()}return 65536&(a=u.flags)?(u.flags=-65537&a|128,u):null;case 19:return E(rv),null;case 4:return Jh(),null;case 10:return Rg(u.type._context),null;case 22:case 23:return Ij(),null;default:return null}}s=function(a,u){for(var i=u.child;null!==i;){if(5===i.tag||6===i.tag)a.appendChild(i.stateNode);else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===u)break;for(;null===i.sibling;){if(null===i.return||i.return===u)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},w=function(){},x=function(a,u,i,o){var s=a.memoizedProps;if(s!==o){a=u.stateNode,Hh(rp.current);var w,x=null;switch(i){case"input":s=Ya(a,s),o=Ya(a,o),x=[];break;case"select":s=eS({},s,{value:void 0}),o=eS({},o,{value:void 0}),x=[];break;case"textarea":s=gb(a,s),o=gb(a,o),x=[];break;default:"function"!=typeof s.onClick&&"function"==typeof o.onClick&&(a.onclick=Bf)}for(j in ub(i,o),i=null,s)if(!o.hasOwnProperty(j)&&s.hasOwnProperty(j)&&null!=s[j]){if("style"===j){var C=s[j];for(w in C)C.hasOwnProperty(w)&&(i||(i={}),i[w]="")}else"dangerouslySetInnerHTML"!==j&&"children"!==j&&"suppressContentEditableWarning"!==j&&"suppressHydrationWarning"!==j&&"autoFocus"!==j&&(U.hasOwnProperty(j)?x||(x=[]):(x=x||[]).push(j,null))}for(j in o){var _=o[j];if(C=null!=s?s[j]:void 0,o.hasOwnProperty(j)&&_!==C&&(null!=_||null!=C)){if("style"===j){if(C){for(w in C)!C.hasOwnProperty(w)||_&&_.hasOwnProperty(w)||(i||(i={}),i[w]="");for(w in _)_.hasOwnProperty(w)&&C[w]!==_[w]&&(i||(i={}),i[w]=_[w])}else i||(x||(x=[]),x.push(j,i)),i=_}else"dangerouslySetInnerHTML"===j?(_=_?_.__html:void 0,C=C?C.__html:void 0,null!=_&&C!==_&&(x=x||[]).push(j,_)):"children"===j?"string"!=typeof _&&"number"!=typeof _||(x=x||[]).push(j,""+_):"suppressContentEditableWarning"!==j&&"suppressHydrationWarning"!==j&&(U.hasOwnProperty(j)?(null!=_&&"onScroll"===j&&D("scroll",a),x||C===_||(x=[])):(x=x||[]).push(j,_))}}i&&(x=x||[]).push("style",i);var j=x;(u.updateQueue=j)&&(u.flags|=4)}},C=function(a,u,i,o){i!==o&&(u.flags|=4)};var rU=!1,rV=!1,rW="function"==typeof WeakSet?WeakSet:Set,rA=null;function Mj(a,u){var i=a.ref;if(null!==i){if("function"==typeof i)try{i(null)}catch(i){W(a,u,i)}else i.current=null}}function Nj(a,u,i){try{i()}catch(i){W(a,u,i)}}var rQ=!1;function Pj(a,u){if(tC=nk,Ne(a=Me())){if("selectionStart"in a)var i={start:a.selectionStart,end:a.selectionEnd};else e:{var o=(i=(i=a.ownerDocument)&&i.defaultView||window).getSelection&&i.getSelection();if(o&&0!==o.rangeCount){i=o.anchorNode;var s,w=o.anchorOffset,x=o.focusNode;o=o.focusOffset;try{i.nodeType,x.nodeType}catch(a){i=null;break e}var C=0,_=-1,j=-1,z=0,P=0,U=a,V=null;n:for(;;){for(;U!==i||0!==w&&3!==U.nodeType||(_=C+w),U!==x||0!==o&&3!==U.nodeType||(j=C+o),3===U.nodeType&&(C+=U.nodeValue.length),null!==(s=U.firstChild);)V=U,U=s;for(;;){if(U===a)break n;if(V===i&&++z===w&&(_=C),V===x&&++P===o&&(j=C),null!==(s=U.nextSibling))break;V=(U=V).parentNode}U=s}i=-1===_||-1===j?null:{start:_,end:j}}else i=null}i=i||{start:0,end:0}}else i=null;for(t_={focusedElem:a,selectionRange:i},nk=!1,rA=u;null!==rA;)if(a=(u=rA).child,0!=(1028&u.subtreeFlags)&&null!==a)a.return=u,rA=a;else for(;null!==rA;){u=rA;try{var B=u.alternate;if(0!=(1024&u.flags))switch(u.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==B){var $=B.memoizedProps,Y=B.memoizedState,Z=u.stateNode,X=Z.getSnapshotBeforeUpdate(u.elementType===u.type?$:Lg(u.type,$),Y);Z.__reactInternalSnapshotBeforeUpdate=X}break;case 3:var ee=u.stateNode.containerInfo;1===ee.nodeType?ee.textContent="":9===ee.nodeType&&ee.documentElement&&ee.removeChild(ee.documentElement);break;default:throw Error(p(163))}}catch(a){W(u,u.return,a)}if(null!==(a=u.sibling)){a.return=u.return,rA=a;break}rA=u.return}return B=rQ,rQ=!1,B}function Qj(a,u,i){var o=u.updateQueue;if(null!==(o=null!==o?o.lastEffect:null)){var s=o=o.next;do{if((s.tag&a)===a){var w=s.destroy;s.destroy=void 0,void 0!==w&&Nj(u,i,w)}s=s.next}while(s!==o)}}function Rj(a,u){if(null!==(u=null!==(u=u.updateQueue)?u.lastEffect:null)){var i=u=u.next;do{if((i.tag&a)===a){var o=i.create;i.destroy=o()}i=i.next}while(i!==u)}}function Sj(a){var u=a.ref;if(null!==u){var i=a.stateNode;a.tag,a=i,"function"==typeof u?u(a):u.current=a}}function Tj(a){var u=a.alternate;null!==u&&(a.alternate=null,Tj(u)),a.child=null,a.deletions=null,a.sibling=null,5===a.tag&&null!==(u=a.stateNode)&&(delete u[tD],delete u[tR],delete u[tI],delete u[tO],delete u[tF]),a.stateNode=null,a.return=null,a.dependencies=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.stateNode=null,a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}function Vj(a){e:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(2&a.flags||null===a.child||4===a.tag)continue e;a.child.return=a,a=a.child}if(!(2&a.flags))return a.stateNode}}function Wj(a,u,i){var o=a.tag;if(5===o||6===o)a=a.stateNode,u?8===i.nodeType?i.parentNode.insertBefore(a,u):i.insertBefore(a,u):(8===i.nodeType?(u=i.parentNode).insertBefore(a,i):(u=i).appendChild(a),null!=(i=i._reactRootContainer)||null!==u.onclick||(u.onclick=Bf));else if(4!==o&&null!==(a=a.child))for(Wj(a,u,i),a=a.sibling;null!==a;)Wj(a,u,i),a=a.sibling}function Xj(a,u,i){var o=a.tag;if(5===o||6===o)a=a.stateNode,u?i.insertBefore(a,u):i.appendChild(a);else if(4!==o&&null!==(a=a.child))for(Xj(a,u,i),a=a.sibling;null!==a;)Xj(a,u,i),a=a.sibling}var rB=null,r$=!1;function Zj(a,u,i){for(i=i.child;null!==i;)ak(a,u,i),i=i.sibling}function ak(a,u,i){if(e2&&"function"==typeof e2.onCommitFiberUnmount)try{e2.onCommitFiberUnmount(e1,i)}catch(a){}switch(i.tag){case 5:rV||Mj(i,u);case 6:var o=rB,s=r$;rB=null,Zj(a,u,i),rB=o,r$=s,null!==rB&&(r$?(a=rB,i=i.stateNode,8===a.nodeType?a.parentNode.removeChild(i):a.removeChild(i)):rB.removeChild(i.stateNode));break;case 18:null!==rB&&(r$?(a=rB,i=i.stateNode,8===a.nodeType?Kf(a.parentNode,i):1===a.nodeType&&Kf(a,i),bd(a)):Kf(rB,i.stateNode));break;case 4:o=rB,s=r$,rB=i.stateNode.containerInfo,r$=!0,Zj(a,u,i),rB=o,r$=s;break;case 0:case 11:case 14:case 15:if(!rV&&null!==(o=i.updateQueue)&&null!==(o=o.lastEffect)){s=o=o.next;do{var w=s,x=w.destroy;w=w.tag,void 0!==x&&(0!=(2&w)?Nj(i,u,x):0!=(4&w)&&Nj(i,u,x)),s=s.next}while(s!==o)}Zj(a,u,i);break;case 1:if(!rV&&(Mj(i,u),"function"==typeof(o=i.stateNode).componentWillUnmount))try{o.props=i.memoizedProps,o.state=i.memoizedState,o.componentWillUnmount()}catch(a){W(i,u,a)}Zj(a,u,i);break;case 21:default:Zj(a,u,i);break;case 22:1&i.mode?(rV=(o=rV)||null!==i.memoizedState,Zj(a,u,i),rV=o):Zj(a,u,i)}}function bk(a){var u=a.updateQueue;if(null!==u){a.updateQueue=null;var i=a.stateNode;null===i&&(i=a.stateNode=new rW),u.forEach(function(u){var o=ck.bind(null,a,u);i.has(u)||(i.add(u),u.then(o,o))})}}function dk(a,u){var i=u.deletions;if(null!==i)for(var o=0;os&&(s=x),o&=~w}if(o=s,10<(o=(120>(o=eq()-o)?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*rH(o/1960))-o)){a.timeoutHandle=tL(Qk.bind(null,a,r9,ln),o);break}Qk(a,r9,ln);break;default:throw Error(p(329))}}}return Ek(a,eq()),a.callbackNode===i?Hk.bind(null,a):null}function Ok(a,u){var i=r6;return a.current.memoizedState.isDehydrated&&(Lk(a,u).flags|=256),2!==(a=Jk(a,u))&&(u=r9,r9=i,null!==u&&Gj(u)),a}function Gj(a){null===r9?r9=a:r9.push.apply(r9,a)}function Pk(a){for(var u=a;;){if(16384&u.flags){var i=u.updateQueue;if(null!==i&&null!==(i=i.stores))for(var o=0;oa?16:a,null===lu)var o=!1;else{if(a=lu,lu=null,lo=0,0!=(6&rY))throw Error(p(331));var s=rY;for(rY|=4,rA=a.current;null!==rA;){var w=rA,x=w.child;if(0!=(16&rA.flags)){var C=w.deletions;if(null!==C){for(var _=0;_eq()-r7?Lk(a,0):r5|=i),Ek(a,u)}function Zk(a,u){0===u&&(0==(1&a.mode)?u=1:(u=e6,0==(130023424&(e6<<=1))&&(e6=4194304)));var i=L();null!==(a=Zg(a,u))&&(Ac(a,u,i),Ek(a,i))}function vj(a){var u=a.memoizedState,i=0;null!==u&&(i=u.retryLane),Zk(a,i)}function ck(a,u){var i=0;switch(a.tag){case 13:var o=a.stateNode,s=a.memoizedState;null!==s&&(i=s.retryLane);break;case 19:o=a.stateNode;break;default:throw Error(p(314))}null!==o&&o.delete(u),Zk(a,i)}function al(a,u,i,o){this.tag=a,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=u,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Bg(a,u,i,o){return new al(a,u,i,o)}function bj(a){return!(!(a=a.prototype)||!a.isReactComponent)}function $k(a){if("function"==typeof a)return bj(a)?1:0;if(null!=a){if((a=a.$$typeof)===ef)return 11;if(a===em)return 14}return 2}function wh(a,u){var i=a.alternate;return null===i?((i=Bg(a.tag,u,a.key,a.mode)).elementType=a.elementType,i.type=a.type,i.stateNode=a.stateNode,i.alternate=a,a.alternate=i):(i.pendingProps=u,i.type=a.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=14680064&a.flags,i.childLanes=a.childLanes,i.lanes=a.lanes,i.child=a.child,i.memoizedProps=a.memoizedProps,i.memoizedState=a.memoizedState,i.updateQueue=a.updateQueue,u=a.dependencies,i.dependencies=null===u?null:{lanes:u.lanes,firstContext:u.firstContext},i.sibling=a.sibling,i.index=a.index,i.ref=a.ref,i}function yh(a,u,i,o,s,w){var x=2;if(o=a,"function"==typeof a)bj(a)&&(x=1);else if("string"==typeof a)x=5;else e:switch(a){case ea:return Ah(i.children,s,w,u);case eu:x=8,s|=8;break;case eo:return(a=Bg(12,i,u,2|s)).elementType=eo,a.lanes=w,a;case ep:return(a=Bg(13,i,u,s)).elementType=ep,a.lanes=w,a;case eg:return(a=Bg(19,i,u,s)).elementType=eg,a.lanes=w,a;case eb:return qj(i,s,w,u);default:if("object"==typeof a&&null!==a)switch(a.$$typeof){case es:x=10;break e;case ec:x=9;break e;case ef:x=11;break e;case em:x=14;break e;case ev:x=16,o=null;break e}throw Error(p(130,null==a?a:typeof a,""))}return(u=Bg(x,i,u,s)).elementType=a,u.type=o,u.lanes=w,u}function Ah(a,u,i,o){return(a=Bg(7,a,o,u)).lanes=i,a}function qj(a,u,i,o){return(a=Bg(22,a,o,u)).elementType=eb,a.lanes=i,a.stateNode={isHidden:!1},a}function xh(a,u,i){return(a=Bg(6,a,null,u)).lanes=i,a}function zh(a,u,i){return(u=Bg(4,null!==a.children?a.children:[],a.key,u)).lanes=i,u.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation},u}function bl(a,u,i,o,s){this.tag=u,this.containerInfo=a,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zc(0),this.expirationTimes=zc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zc(0),this.identifierPrefix=o,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function cl(a,u,i,o,s,w,x,C,_){return a=new bl(a,u,i,C,_),1===u?(u=1,!0===w&&(u|=8)):u=0,w=Bg(3,null,null,u),a.current=w,w.stateNode=a,w.memoizedState={element:o,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},ah(w),a}function dl(a,u,i){var o=3>>1,s=a[o];if(0>>1;og(C,i))_g(j,C)?(a[o]=j,a[_]=i,o=_):(a[o]=C,a[x]=i,o=x);else if(_g(j,i))a[o]=j,a[_]=i,o=_;else break}}return u}function g(a,u){var i=a.sortIndex-u.sortIndex;return 0!==i?i:a.id-u.id}if("object"==typeof performance&&"function"==typeof performance.now){var i,o=performance;u.unstable_now=function(){return o.now()}}else{var s=Date,w=s.now();u.unstable_now=function(){return s.now()-w}}var x=[],C=[],_=1,j=null,z=3,P=!1,U=!1,V=!1,B="function"==typeof setTimeout?setTimeout:null,$="function"==typeof clearTimeout?clearTimeout:null,Y="undefined"!=typeof setImmediate?setImmediate:null;function G(a){for(var u=h(C);null!==u;){if(null===u.callback)k(C);else if(u.startTime<=a)k(C),u.sortIndex=u.expirationTime,f(x,u);else break;u=h(C)}}function H(a){if(V=!1,G(a),!U){if(null!==h(x))U=!0,I(J);else{var u=h(C);null!==u&&K(H,u.startTime-a)}}}function J(a,i){U=!1,V&&(V=!1,$(ee),ee=-1),P=!0;var o=z;try{for(G(i),j=h(x);null!==j&&(!(j.expirationTime>i)||a&&!M());){var s=j.callback;if("function"==typeof s){j.callback=null,z=j.priorityLevel;var w=s(j.expirationTime<=i);i=u.unstable_now(),"function"==typeof w?j.callback=w:j===h(x)&&k(x),G(i)}else k(x);j=h(x)}if(null!==j)var _=!0;else{var B=h(C);null!==B&&K(H,B.startTime-i),_=!1}return _}finally{j=null,z=o,P=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var Z=!1,X=null,ee=-1,en=5,et=-1;function M(){return!(u.unstable_now()-eta||125s?(a.sortIndex=o,f(C,a),null===h(x)&&a===h(C)&&(V?($(ee),ee=-1):V=!0,K(H,o-s))):(a.sortIndex=w,f(x,a),U||P||(U=!0,I(J))),a},u.unstable_shouldYield=M,u.unstable_wrapCallback=function(a){var u=z;return function(){var i=z;z=u;try{return a.apply(this,arguments)}finally{z=i}}}},3840:function(a,u,i){a.exports=i(53)}}]);(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[179],{3143:function(){"use strict";try{self["workbox:window:6.5.4"]&&_()}catch(l){}function n(l,d){return new Promise(function(f){var h=new MessageChannel;h.port1.onmessage=function(l){f(l.data)},l.postMessage(d,[h.port2])})}function t(l,d){for(var f=0;fl.length)&&(d=l.length);for(var f=0,h=Array(d);f=l.length?{done:!0}:{done:!1,value:l[h++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(f=l[Symbol.iterator]()).next.bind(f)}try{self["workbox:core:6.5.4"]&&_()}catch(l){}var i=function(){var l=this;this.promise=new Promise(function(d,f){l.resolve=d,l.reject=f})};function o(l,d){var f=location.href;return new URL(l,f).href===new URL(d,f).href}var u=function(l,d){this.type=l,Object.assign(this,d)};function a(l,d,f){return f?d?d(l):l:(l&&l.then||(l=Promise.resolve(l)),d?l.then(d):l)}function c(){}var l={type:"SKIP_WAITING"};function s(l,d){if(!d)return l&&l.then?l.then(c):Promise.resolve()}var d=function(d){function v(l,f){var h,g;return void 0===f&&(f={}),(h=d.call(this)||this).nn={},h.tn=0,h.rn=new i,h.en=new i,h.on=new i,h.un=0,h.an=new Set,h.cn=function(){var l=h.fn,d=l.installing;h.tn>0||!o(d.scriptURL,h.sn.toString())||performance.now()>h.un+6e4?(h.vn=d,l.removeEventListener("updatefound",h.cn)):(h.hn=d,h.an.add(d),h.rn.resolve(d)),++h.tn,d.addEventListener("statechange",h.ln)},h.ln=function(l){var d=h.fn,f=l.target,g=f.state,y=f===h.vn,P={sw:f,isExternal:y,originalEvent:l};!y&&h.mn&&(P.isUpdate=!0),h.dispatchEvent(new u(g,P)),"installed"===g?h.wn=self.setTimeout(function(){"installed"===g&&d.waiting===f&&h.dispatchEvent(new u("waiting",P))},200):"activating"===g&&(clearTimeout(h.wn),y||h.en.resolve(f))},h.dn=function(l){var d=h.hn,f=d!==navigator.serviceWorker.controller;h.dispatchEvent(new u("controlling",{isExternal:f,originalEvent:l,sw:d,isUpdate:h.mn})),f||h.on.resolve(d)},h.gn=(g=function(l){var d=l.data,f=l.ports,g=l.source;return a(h.getSW(),function(){h.an.has(g)&&h.dispatchEvent(new u("message",{data:d,originalEvent:l,ports:f,sw:g}))})},function(){for(var l=[],d=0;dl.put("/",new Response("",{status:200})))}),window.workbox=new d(window.location.origin+"/sw.js",{scope:"/"}),window.workbox.addEventListener("installed",async({isUpdate:l})=>{if(!l){let l=await caches.open("start-url"),d=await fetch("/"),f=d;d.redirected&&(f=new Response(d.body,{status:200,statusText:"OK",headers:d.headers})),await l.put("/",f)}}),window.workbox.addEventListener("installed",async()=>{let l=window.performance.getEntriesByType("resource").map(l=>l.name).filter(l=>l.startsWith(`${window.location.origin}/_next/data/`)&&l.endsWith(".json")),d=await caches.open("next-data");l.forEach(l=>d.add(l))}),window.workbox.register();{let cacheOnFrontEndNav=function(l){if(window.navigator.onLine&&"/"===l)return fetch("/").then(function(l){return l.redirected?Promise.resolve():caches.open("start-url").then(d=>d.put("/",l))})},l=history.pushState;history.pushState=function(){l.apply(history,arguments),cacheOnFrontEndNav(arguments[2])};let d=history.replaceState;history.replaceState=function(){d.apply(history,arguments),cacheOnFrontEndNav(arguments[2])},window.addEventListener("online",()=>{cacheOnFrontEndNav(window.location.pathname)})}window.addEventListener("online",()=>{location.reload()})}},4878:function(l,d){"use strict";function getDeploymentIdQueryOrEmptyString(){return""}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return getDeploymentIdQueryOrEmptyString}})},37:function(){"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var l=/\((.*)\)/.exec(this.toString());return l?l[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(l,d){return d=this.concat.apply([],this),l>1&&d.some(Array.isArray)?d.flat(l-1):d},Array.prototype.flatMap=function(l,d){return this.map(l,d).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(l){if("function"!=typeof l)return this.then(l,l);var d=this.constructor||Promise;return this.then(function(f){return d.resolve(l()).then(function(){return f})},function(f){return d.resolve(l()).then(function(){throw f})})}),Object.fromEntries||(Object.fromEntries=function(l){return Array.from(l).reduce(function(l,d){return l[d[0]]=d[1],l},{})}),Array.prototype.at||(Array.prototype.at=function(l){var d=Math.trunc(l)||0;if(d<0&&(d+=this.length),!(d<0||d>=this.length))return this[d]})},7192:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"addBasePath",{enumerable:!0,get:function(){return addBasePath}});let h=f(6063),g=f(2866);function addBasePath(l,d){return(0,g.normalizePathTrailingSlash)((0,h.addPathPrefix)(l,""))}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},3607:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"addLocale",{enumerable:!0,get:function(){return addLocale}}),f(2866);let addLocale=function(l){for(var d=arguments.length,f=Array(d>1?d-1:0),h=1;h25){window.location.reload();return}clearTimeout(d),d=setTimeout(init,g>5?5e3:1e3)}f&&f.close();let{hostname:y,port:P}=location,b=getSocketProtocol(l.assetPrefix||""),E=l.assetPrefix.replace(/^\/+/,""),S=b+"://"+y+":"+P+(E?"/"+E:"");E.startsWith("http")&&(S=b+"://"+E.split("://",2)[1]),(f=new window.WebSocket(""+S+l.path)).onopen=handleOnline,f.onerror=handleDisconnect,f.onclose=handleDisconnect,f.onmessage=handleMessage}init()}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6864:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"hasBasePath",{enumerable:!0,get:function(){return hasBasePath}});let h=f(387);function hasBasePath(l){return(0,h.pathHasPrefix)(l,"")}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6623:function(l,d){"use strict";let f;Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{DOMAttributeNames:function(){return h},isEqualNode:function(){return isEqualNode},default:function(){return initHeadManager}});let h={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"};function reactElementToDOM(l){let{type:d,props:f}=l,g=document.createElement(d);for(let l in f){if(!f.hasOwnProperty(l)||"children"===l||"dangerouslySetInnerHTML"===l||void 0===f[l])continue;let y=h[l]||l.toLowerCase();"script"===d&&("async"===y||"defer"===y||"noModule"===y)?g[y]=!!f[l]:g.setAttribute(y,f[l])}let{children:y,dangerouslySetInnerHTML:P}=f;return P?g.innerHTML=P.__html||"":y&&(g.textContent="string"==typeof y?y:Array.isArray(y)?y.join(""):""),g}function isEqualNode(l,d){if(l instanceof HTMLElement&&d instanceof HTMLElement){let f=d.getAttribute("nonce");if(f&&!l.getAttribute("nonce")){let h=d.cloneNode(!0);return h.setAttribute("nonce",""),h.nonce=f,f===l.nonce&&l.isEqualNode(h)}}return l.isEqualNode(d)}function initHeadManager(){return{mountedInstances:new Set,updateHead:l=>{let d={};l.forEach(l=>{if("link"===l.type&&l.props["data-optimized-fonts"]){if(document.querySelector('style[data-href="'+l.props["data-href"]+'"]'))return;l.props.href=l.props["data-href"],l.props["data-href"]=void 0}let f=d[l.type]||[];f.push(l),d[l.type]=f});let h=d.title?d.title[0]:null,g="";if(h){let{children:l}=h.props;g="string"==typeof l?l:Array.isArray(l)?l.join(""):""}g!==document.title&&(document.title=g),["meta","base","link","style","script"].forEach(l=>{f(l,d[l]||[])})}}}f=(l,d)=>{let f=document.getElementsByTagName("head")[0],h=f.querySelector("meta[name=next-head-count]"),g=Number(h.content),y=[];for(let d=0,f=h.previousElementSibling;d{for(let d=0,f=y.length;d{var d;return null==(d=l.parentNode)?void 0:d.removeChild(l)}),b.forEach(l=>f.insertBefore(l,h)),h.content=(g-y.length+b.length).toString()},("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},1078:function(l,d,f){"use strict";let h,g,y,P,b,E,S,w,R,O,j,A;Object.defineProperty(d,"__esModule",{value:!0});let M=f(1757);Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{version:function(){return ea},router:function(){return h},emitter:function(){return eo},initialize:function(){return initialize},hydrate:function(){return hydrate}});let C=f(8754);f(37);let I=C._(f(7294)),L=C._(f(745)),x=f(6734),N=C._(f(6860)),D=f(1823),k=f(3937),F=f(9203),U=f(5980),H=f(5612),B=f(109),W=f(4511),q=C._(f(6623)),z=C._(f(804)),G=C._(f(2891)),V=f(8099),X=f(9974),K=f(676),Y=f(869),Q=f(8961),$=f(6864),J=f(9031),Z=f(9642),ee=f(1593),et=C._(f(80)),er=C._(f(5944)),en=C._(f(5677)),ea="14.0.1",eo=(0,N.default)(),looseToArray=l=>[].slice.call(l),ei=!1;let Container=class Container extends I.default.Component{componentDidCatch(l,d){this.props.fn(l,d)}componentDidMount(){this.scrollToHash(),h.isSsr&&(g.isFallback||g.nextExport&&((0,F.isDynamicRoute)(h.pathname)||location.search||ei)||g.props&&g.props.__N_SSG&&(location.search||ei))&&h.replace(h.pathname+"?"+String((0,U.assign)((0,U.urlQueryToSearchParams)(h.query),new URLSearchParams(location.search))),y,{_h:1,shallow:!g.isFallback&&!ei}).catch(l=>{if(!l.cancelled)throw l})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:l}=location;if(!(l=l&&l.substring(1)))return;let d=document.getElementById(l);d&&setTimeout(()=>d.scrollIntoView(),0)}render(){return this.props.children}};async function initialize(l){void 0===l&&(l={}),er.default.onSpanEnd(en.default),g=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=g,A=g.defaultLocale;let d=g.assetPrefix||"";if(self.__next_set_public_path__(""+d+"/_next/"),(0,H.setConfig)({serverRuntimeConfig:{},publicRuntimeConfig:g.runtimeConfig||{}}),y=(0,B.getURL)(),(0,$.hasBasePath)(y)&&(y=(0,Q.removeBasePath)(y)),g.scriptLoader){let{initScriptLoader:l}=f(5354);l(g.scriptLoader)}P=new z.default(g.buildId,d);let register=l=>{let[d,f]=l;return P.routeLoader.onEntrypoint(d,f)};return window.__NEXT_P&&window.__NEXT_P.map(l=>setTimeout(()=>register(l),0)),window.__NEXT_P=[],window.__NEXT_P.push=register,(E=(0,q.default)()).getIsSsr=()=>h.isSsr,b=document.getElementById("__next"),{assetPrefix:d}}function renderApp(l,d){return I.default.createElement(l,d)}function AppContainer(l){var d;let{children:f}=l,g=I.default.useMemo(()=>(0,Z.adaptForAppRouterInstance)(h),[]);return I.default.createElement(Container,{fn:l=>renderError({App:R,err:l}).catch(l=>console.error("Error rendering page: ",l))},I.default.createElement(J.AppRouterContext.Provider,{value:g},I.default.createElement(ee.SearchParamsContext.Provider,{value:(0,Z.adaptForSearchParams)(h)},I.default.createElement(Z.PathnameContextProviderAdapter,{router:h,isAutoExport:null!=(d=self.__NEXT_DATA__.autoExport)&&d},I.default.createElement(ee.PathParamsContext.Provider,{value:(0,Z.adaptForPathParams)(h)},I.default.createElement(D.RouterContext.Provider,{value:(0,X.makePublicRouterInstance)(h)},I.default.createElement(x.HeadManagerContext.Provider,{value:E},I.default.createElement(Y.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}},f))))))))}let wrapApp=l=>d=>{let f={...d,Component:j,err:g.err,router:h};return I.default.createElement(AppContainer,null,renderApp(l,f))};function renderError(l){let{App:d,err:b}=l;return console.error(b),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),P.loadPage("/_error").then(h=>{let{page:g,styleSheets:y}=h;return(null==S?void 0:S.Component)===g?Promise.resolve().then(()=>M._(f(6908))).then(h=>Promise.resolve().then(()=>M._(f(1337))).then(f=>(d=f.default,l.App=d,h))).then(l=>({ErrorComponent:l.default,styleSheets:[]})):{ErrorComponent:g,styleSheets:y}}).then(f=>{var P;let{ErrorComponent:E,styleSheets:S}=f,w=wrapApp(d),R={Component:E,AppTree:w,router:h,ctx:{err:b,pathname:g.page,query:g.query,asPath:y,AppTree:w}};return Promise.resolve((null==(P=l.props)?void 0:P.err)?l.props:(0,B.loadGetInitialProps)(d,R)).then(d=>doRender({...l,err:b,Component:E,styleSheets:S,props:d}))})}function Head(l){let{callback:d}=l;return I.default.useLayoutEffect(()=>d(),[d]),null}let el={navigationStart:"navigationStart",beforeRender:"beforeRender",afterRender:"afterRender",afterHydrate:"afterHydrate",routeChange:"routeChange"},eu={hydration:"Next.js-hydration",beforeHydration:"Next.js-before-hydration",routeChangeToRender:"Next.js-route-change-to-render",render:"Next.js-render"},es=null,ec=!0;function clearMarks(){[el.beforeRender,el.afterHydrate,el.afterRender,el.routeChange].forEach(l=>performance.clearMarks(l))}function markHydrateComplete(){if(!B.ST)return;performance.mark(el.afterHydrate);let l=performance.getEntriesByName(el.beforeRender,"mark").length;l&&(performance.measure(eu.beforeHydration,el.navigationStart,el.beforeRender),performance.measure(eu.hydration,el.beforeRender,el.afterHydrate)),O&&performance.getEntriesByName(eu.hydration).forEach(O),clearMarks()}function markRenderComplete(){if(!B.ST)return;performance.mark(el.afterRender);let l=performance.getEntriesByName(el.routeChange,"mark");if(!l.length)return;let d=performance.getEntriesByName(el.beforeRender,"mark").length;d&&(performance.measure(eu.routeChangeToRender,l[0].name,el.beforeRender),performance.measure(eu.render,el.beforeRender,el.afterRender),O&&(performance.getEntriesByName(eu.render).forEach(O),performance.getEntriesByName(eu.routeChangeToRender).forEach(O))),clearMarks(),[eu.routeChangeToRender,eu.render].forEach(l=>performance.clearMeasures(l))}function renderReactElement(l,d){B.ST&&performance.mark(el.beforeRender);let f=d(ec?markHydrateComplete:markRenderComplete);if(es){let l=I.default.startTransition;l(()=>{es.render(f)})}else es=L.default.hydrateRoot(l,f,{onRecoverableError:et.default}),ec=!1}function Root(l){let{callbacks:d,children:f}=l;return I.default.useLayoutEffect(()=>d.forEach(l=>l()),[d]),I.default.useEffect(()=>{(0,G.default)(O)},[]),f}function doRender(l){let d,{App:f,Component:g,props:y,err:P}=l,E="initial"in l?void 0:l.styleSheets;g=g||S.Component,y=y||S.props;let R={...y,Component:g,err:P,router:h};S=R;let O=!1,j=new Promise((l,f)=>{w&&w(),d=()=>{w=null,l()},w=()=>{O=!0,w=null;let l=Error("Cancel rendering route");l.cancelled=!0,f(l)}});function onHeadCommit(){if(E&&!O){let l=new Set(E.map(l=>l.href)),d=looseToArray(document.querySelectorAll("style[data-n-href]")),f=d.map(l=>l.getAttribute("data-n-href"));for(let h=0;h{let{href:d}=l,f=document.querySelector('style[data-n-href="'+d+'"]');f&&(h.parentNode.insertBefore(f,h.nextSibling),h=f)}),looseToArray(document.querySelectorAll("link[data-n-p]")).forEach(l=>{l.parentNode.removeChild(l)})}if(l.scroll){let{x:d,y:f}=l.scroll;(0,k.handleSmoothScroll)(()=>{window.scrollTo(d,f)})}}function onRootCommit(){d()}!function(){if(!E)return;let l=looseToArray(document.querySelectorAll("style[data-n-href]")),d=new Set(l.map(l=>l.getAttribute("data-n-href"))),f=document.querySelector("noscript[data-n-css]"),h=null==f?void 0:f.getAttribute("data-n-css");E.forEach(l=>{let{href:f,text:g}=l;if(!d.has(f)){let l=document.createElement("style");l.setAttribute("data-n-href",f),l.setAttribute("media","x"),h&&l.setAttribute("nonce",h),document.head.appendChild(l),l.appendChild(document.createTextNode(g))}})}();let A=I.default.createElement(I.default.Fragment,null,I.default.createElement(Head,{callback:onHeadCommit}),I.default.createElement(AppContainer,null,renderApp(f,R),I.default.createElement(W.Portal,{type:"next-route-announcer"},I.default.createElement(V.RouteAnnouncer,null))));return renderReactElement(b,l=>I.default.createElement(Root,{callbacks:[l,onRootCommit]},A)),j}async function render(l){if(l.err){await renderError(l);return}try{await doRender(l)}catch(f){let d=(0,K.getProperError)(f);if(d.cancelled)throw d;await renderError({...l,err:d})}}async function hydrate(l){let d=g.err;try{let l=await P.routeLoader.whenEntrypoint("/_app");if("error"in l)throw l.error;let{component:d,exports:f}=l;R=d,f&&f.reportWebVitals&&(O=l=>{let d,{id:h,name:g,startTime:y,value:P,duration:b,entryType:E,entries:S,attribution:w}=l,R=Date.now()+"-"+(Math.floor(Math.random()*(9e12-1))+1e12);S&&S.length&&(d=S[0].startTime);let O={id:h||R,name:g,startTime:y||d,value:null==P?b:P,label:"mark"===E||"measure"===E?"custom":"web-vital"};w&&(O.attribution=w),f.reportWebVitals(O)});let h=await P.routeLoader.whenEntrypoint(g.page);if("error"in h)throw h.error;j=h.component}catch(l){d=(0,K.getProperError)(l)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(g.dynamicIds),h=(0,X.createRouter)(g.page,g.query,y,{initialProps:g.props,pageLoader:P,App:R,Component:j,wrapApp,err:d,isFallback:!!g.isFallback,subscription:(l,d,f)=>render(Object.assign({},l,{App:d,scroll:f})),locale:g.locale,locales:g.locales,defaultLocale:A,domainLocales:g.domainLocales,isPreview:g.isPreview}),ei=await h._initialMatchesMiddlewarePromise;let f={App:R,initial:!0,Component:j,props:g.props,err:d};(null==l?void 0:l.beforeRender)&&await l.beforeRender(),render(f)}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6003:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),f(3737);let h=f(1078);window.next={version:h.version,get router(){return h.router},emitter:h.emitter},(0,h.initialize)({}).then(()=>(0,h.hydrate)()).catch(console.error),("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},2866:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return normalizePathTrailingSlash}});let h=f(7425),g=f(1156),normalizePathTrailingSlash=l=>{if(!l.startsWith("/"))return l;let{pathname:d,query:f,hash:y}=(0,g.parsePath)(l);return""+(0,h.removeTrailingSlash)(d)+f+y};("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},80:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return onRecoverableError}});let h=f(6146);function onRecoverableError(l){let d="function"==typeof reportError?reportError:l=>{window.console.error(l)};l.digest!==h.NEXT_DYNAMIC_NO_SSR_CODE&&d(l)}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},804:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return PageLoader}});let h=f(8754),g=f(7192),y=f(2969),P=h._(f(8356)),b=f(3607),E=f(9203),S=f(1748),w=f(7425),R=f(769);f(2338);let PageLoader=class PageLoader{getPageList(){return(0,R.getClientBuildManifest)().then(l=>l.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[],window.__MIDDLEWARE_MATCHERS}getDataHref(l){let{asPath:d,href:f,locale:h}=l,{pathname:R,query:O,search:j}=(0,S.parseRelativeUrl)(f),{pathname:A}=(0,S.parseRelativeUrl)(d),M=(0,w.removeTrailingSlash)(R);if("/"!==M[0])throw Error('Route name should start with a "/", got "'+M+'"');return(l=>{let d=(0,P.default)((0,w.removeTrailingSlash)((0,b.addLocale)(l,h)),".json");return(0,g.addBasePath)("/_next/data/"+this.buildId+d+j,!0)})(l.skipInterpolation?A:(0,E.isDynamicRoute)(M)?(0,y.interpolateAs)(R,A,O).result:M)}_isSsg(l){return this.promisedSsgManifest.then(d=>d.has(l))}loadPage(l){return this.routeLoader.loadRoute(l).then(l=>{if("component"in l)return{page:l.component,mod:l.exports,styleSheets:l.styles.map(l=>({href:l.href,text:l.content}))};throw l.error})}prefetch(l){return this.routeLoader.prefetch(l)}constructor(l,d){this.routeLoader=(0,R.createRouteLoader)(d),this.buildId=l,this.assetPrefix=d,this.promisedSsgManifest=new Promise(l=>{window.__SSG_MANIFEST?l(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{l(window.__SSG_MANIFEST)}})}};("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},2891:function(l,d,f){"use strict";let h;Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return _default}});let g=["CLS","FCP","FID","INP","LCP","TTFB"];location.href;let y=!1;function onReport(l){h&&h(l)}let _default=l=>{if(h=l,!y)for(let l of(y=!0,g))try{let d;d||(d=f(8018)),d["on"+l](onReport)}catch(d){console.warn("Failed to track "+l+" web-vital",d)}};("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},4511:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"Portal",{enumerable:!0,get:function(){return Portal}});let h=f(7294),g=f(3935),Portal=l=>{let{children:d,type:f}=l,[y,P]=(0,h.useState)(null);return(0,h.useEffect)(()=>{let l=document.createElement(f);return document.body.appendChild(l),P(l),()=>{document.body.removeChild(l)}},[f]),y?(0,g.createPortal)(d,y):null};("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},8961:function(l,d,f){"use strict";function removeBasePath(l){return l}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"removeBasePath",{enumerable:!0,get:function(){return removeBasePath}}),f(6864),("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},5637:function(l,d,f){"use strict";function removeLocale(l,d){return l}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"removeLocale",{enumerable:!0,get:function(){return removeLocale}}),f(1156),("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},3436:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{requestIdleCallback:function(){return f},cancelIdleCallback:function(){return h}});let f="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(l){let d=Date.now();return self.setTimeout(function(){l({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-d))}})},1)},h="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(l){return clearTimeout(l)};("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},4450:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"resolveHref",{enumerable:!0,get:function(){return resolveHref}});let h=f(5980),g=f(4364),y=f(6455),P=f(109),b=f(2866),E=f(2227),S=f(8410),w=f(2969);function resolveHref(l,d,f){let R;let O="string"==typeof d?d:(0,g.formatWithValidation)(d),j=O.match(/^[a-zA-Z]{1,}:\/\//),A=j?O.slice(j[0].length):O,M=A.split("?",1);if((M[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+O+"' passed to next/router in page: '"+l.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");let d=(0,P.normalizeRepeatedSlashes)(A);O=(j?j[0]:"")+d}if(!(0,E.isLocalURL)(O))return f?[O]:O;try{R=new URL(O.startsWith("#")?l.asPath:l.pathname,"http://n")}catch(l){R=new URL("/","http://n")}try{let l=new URL(O,R);l.pathname=(0,b.normalizePathTrailingSlash)(l.pathname);let d="";if((0,S.isDynamicRoute)(l.pathname)&&l.searchParams&&f){let f=(0,h.searchParamsToUrlQuery)(l.searchParams),{result:P,params:b}=(0,w.interpolateAs)(l.pathname,l.pathname,f);P&&(d=(0,g.formatWithValidation)({pathname:P,hash:l.hash,query:(0,y.omit)(f,b)}))}let P=l.origin===R.origin?l.href.slice(l.origin.length):l.href;return f?[P,d||P]:P}catch(l){return f?[O]:O}}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},8099:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{RouteAnnouncer:function(){return RouteAnnouncer},default:function(){return b}});let h=f(8754),g=h._(f(7294)),y=f(9974),P={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",top:0,width:"1px",whiteSpace:"nowrap",wordWrap:"normal"},RouteAnnouncer=()=>{let{asPath:l}=(0,y.useRouter)(),[d,f]=g.default.useState(""),h=g.default.useRef(l);return g.default.useEffect(()=>{if(h.current!==l){if(h.current=l,document.title)f(document.title);else{var d;let h=document.querySelector("h1"),g=null!=(d=null==h?void 0:h.innerText)?d:null==h?void 0:h.textContent;f(g||l)}}},[l]),g.default.createElement("p",{"aria-live":"assertive",id:"__next-route-announcer__",role:"alert",style:P},d)},b=RouteAnnouncer;("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},769:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{markAssetError:function(){return markAssetError},isAssetError:function(){return isAssetError},getClientBuildManifest:function(){return getClientBuildManifest},createRouteLoader:function(){return createRouteLoader}}),f(8754),f(8356);let h=f(6912),g=f(3436),y=f(4878);function withFuture(l,d,f){let h,g=d.get(l);if(g)return"future"in g?g.future:Promise.resolve(g);let y=new Promise(l=>{h=l});return d.set(l,g={resolve:h,future:y}),f?f().then(l=>(h(l),l)).catch(f=>{throw d.delete(l),f}):y}let P=Symbol("ASSET_LOAD_ERROR");function markAssetError(l){return Object.defineProperty(l,P,{})}function isAssetError(l){return l&&P in l}function hasPrefetch(l){try{return l=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||l.relList.supports("prefetch")}catch(l){return!1}}let b=hasPrefetch(),getAssetQueryString=()=>(0,y.getDeploymentIdQueryOrEmptyString)();function prefetchViaDom(l,d,f){return new Promise((h,g)=>{let y='\n link[rel="prefetch"][href^="'+l+'"],\n link[rel="preload"][href^="'+l+'"],\n script[src^="'+l+'"]';if(document.querySelector(y))return h();f=document.createElement("link"),d&&(f.as=d),f.rel="prefetch",f.crossOrigin=void 0,f.onload=h,f.onerror=()=>g(markAssetError(Error("Failed to prefetch: "+l))),f.href=l,document.head.appendChild(f)})}function appendScript(l,d){return new Promise((f,h)=>{(d=document.createElement("script")).onload=f,d.onerror=()=>h(markAssetError(Error("Failed to load script: "+l))),d.crossOrigin=void 0,d.src=l,document.body.appendChild(d)})}function resolvePromiseWithTimeout(l,d,f){return new Promise((h,y)=>{let P=!1;l.then(l=>{P=!0,h(l)}).catch(y),(0,g.requestIdleCallback)(()=>setTimeout(()=>{P||y(f)},d))})}function getClientBuildManifest(){if(self.__BUILD_MANIFEST)return Promise.resolve(self.__BUILD_MANIFEST);let l=new Promise(l=>{let d=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{l(self.__BUILD_MANIFEST),d&&d()}});return resolvePromiseWithTimeout(l,3800,markAssetError(Error("Failed to load client build manifest")))}function getFilesForRoute(l,d){return getClientBuildManifest().then(f=>{if(!(d in f))throw markAssetError(Error("Failed to lookup route: "+d));let g=f[d].map(d=>l+"/_next/"+encodeURI(d));return{scripts:g.filter(l=>l.endsWith(".js")).map(l=>(0,h.__unsafeCreateTrustedScriptURL)(l)+getAssetQueryString()),css:g.filter(l=>l.endsWith(".css")).map(l=>l+getAssetQueryString())}})}function createRouteLoader(l){let d=new Map,f=new Map,h=new Map,y=new Map;function maybeExecuteScript(l){{let d=f.get(l.toString());return d||(document.querySelector('script[src^="'+l+'"]')?Promise.resolve():(f.set(l.toString(),d=appendScript(l)),d))}}function fetchStyleSheet(l){let d=h.get(l);return d||h.set(l,d=fetch(l).then(d=>{if(!d.ok)throw Error("Failed to load stylesheet: "+l);return d.text().then(d=>({href:l,content:d}))}).catch(l=>{throw markAssetError(l)})),d}return{whenEntrypoint:l=>withFuture(l,d),onEntrypoint(l,f){(f?Promise.resolve().then(()=>f()).then(l=>({component:l&&l.default||l,exports:l}),l=>({error:l})):Promise.resolve(void 0)).then(f=>{let h=d.get(l);h&&"resolve"in h?f&&(d.set(l,f),h.resolve(f)):(f?d.set(l,f):d.delete(l),y.delete(l))})},loadRoute(f,h){return withFuture(f,y,()=>{let g;return resolvePromiseWithTimeout(getFilesForRoute(l,f).then(l=>{let{scripts:h,css:g}=l;return Promise.all([d.has(f)?[]:Promise.all(h.map(maybeExecuteScript)),Promise.all(g.map(fetchStyleSheet))])}).then(l=>this.whenEntrypoint(f).then(d=>({entrypoint:d,styles:l[1]}))),3800,markAssetError(Error("Route did not complete loading: "+f))).then(l=>{let{entrypoint:d,styles:f}=l,h=Object.assign({styles:f},d);return"error"in d?d:h}).catch(l=>{if(h)throw l;return{error:l}}).finally(()=>null==g?void 0:g())})},prefetch(d){let f;return(f=navigator.connection)&&(f.saveData||/2g/.test(f.effectiveType))?Promise.resolve():getFilesForRoute(l,d).then(l=>Promise.all(b?l.scripts.map(l=>prefetchViaDom(l.toString(),"script")):[])).then(()=>{(0,g.requestIdleCallback)(()=>this.loadRoute(d,!0).catch(()=>{}))}).catch(()=>{})}}}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},9974:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{Router:function(){return y.default},default:function(){return O},withRouter:function(){return E.default},useRouter:function(){return useRouter},createRouter:function(){return createRouter},makePublicRouterInstance:function(){return makePublicRouterInstance}});let h=f(8754),g=h._(f(7294)),y=h._(f(2997)),P=f(1823),b=h._(f(676)),E=h._(f(3591)),S={router:null,readyCallbacks:[],ready(l){if(this.router)return l();this.readyCallbacks.push(l)}},w=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],R=["push","replace","reload","back","prefetch","beforePopState"];function getRouter(){if(!S.router)throw Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n');return S.router}Object.defineProperty(S,"events",{get:()=>y.default.events}),w.forEach(l=>{Object.defineProperty(S,l,{get(){let d=getRouter();return d[l]}})}),R.forEach(l=>{S[l]=function(){for(var d=arguments.length,f=Array(d),h=0;h{S.ready(()=>{y.default.events.on(l,function(){for(var d=arguments.length,f=Array(d),h=0;hl()),S.readyCallbacks=[],S.router}function makePublicRouterInstance(l){let d={};for(let f of w){if("object"==typeof l[f]){d[f]=Object.assign(Array.isArray(l[f])?[]:{},l[f]);continue}d[f]=l[f]}return d.events=y.default.events,R.forEach(f=>{d[f]=function(){for(var d=arguments.length,h=Array(d),g=0;g{if(y.default.preinit){l.forEach(l=>{y.default.preinit(l,{as:"style"})});return}{let d=document.head;l.forEach(l=>{let f=document.createElement("link");f.type="text/css",f.rel="stylesheet",f.href=l,d.appendChild(f)})}},loadScript=l=>{let{src:d,id:f,onLoad:h=()=>{},onReady:g=null,dangerouslySetInnerHTML:y,children:P="",strategy:b="afterInteractive",onError:S,stylesheets:j}=l,A=f||d;if(A&&R.has(A))return;if(w.has(d)){R.add(A),w.get(d).then(h,S);return}let afterLoad=()=>{g&&g(),R.add(A)},M=document.createElement("script"),C=new Promise((l,d)=>{M.addEventListener("load",function(d){l(),h&&h.call(this,d),afterLoad()}),M.addEventListener("error",function(l){d(l)})}).catch(function(l){S&&S(l)});for(let[f,h]of(y?(M.innerHTML=y.__html||"",afterLoad()):P?(M.textContent="string"==typeof P?P:Array.isArray(P)?P.join(""):"",afterLoad()):d&&(M.src=d,w.set(d,C)),Object.entries(l))){if(void 0===h||O.includes(f))continue;let l=E.DOMAttributeNames[f]||f.toLowerCase();M.setAttribute(l,h)}"worker"===b&&M.setAttribute("type","text/partytown"),M.setAttribute("data-nscript",b),j&&insertStylesheets(j),document.body.appendChild(M)};function handleClientScriptLoad(l){let{strategy:d="afterInteractive"}=l;"lazyOnload"===d?window.addEventListener("load",()=>{(0,S.requestIdleCallback)(()=>loadScript(l))}):loadScript(l)}function loadLazyScript(l){"complete"===document.readyState?(0,S.requestIdleCallback)(()=>loadScript(l)):window.addEventListener("load",()=>{(0,S.requestIdleCallback)(()=>loadScript(l))})}function addBeforeInteractiveToCache(){let l=[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')];l.forEach(l=>{let d=l.id||l.getAttribute("src");R.add(d)})}function initScriptLoader(l){l.forEach(handleClientScriptLoad),addBeforeInteractiveToCache()}function Script(l){let{id:d,src:f="",onLoad:h=()=>{},onReady:g=null,strategy:E="afterInteractive",onError:S,stylesheets:w,...O}=l,{updateScripts:j,scripts:A,getIsSsr:M,appDir:C,nonce:I}=(0,P.useContext)(b.HeadManagerContext),L=(0,P.useRef)(!1);(0,P.useEffect)(()=>{let l=d||f;L.current||(g&&l&&R.has(l)&&g(),L.current=!0)},[g,d,f]);let x=(0,P.useRef)(!1);if((0,P.useEffect)(()=>{x.current||("afterInteractive"===E?loadScript(l):"lazyOnload"===E&&loadLazyScript(l),x.current=!0)},[l,E]),("beforeInteractive"===E||"worker"===E)&&(j?(A[E]=(A[E]||[]).concat([{id:d,src:f,onLoad:h,onReady:g,onError:S,...O}]),j(A)):M&&M()?R.add(d||f):M&&!M()&&loadScript(l)),C){if(w&&w.forEach(l=>{y.default.preinit(l,{as:"style"})}),"beforeInteractive"===E)return f?(y.default.preload(f,O.integrity?{as:"script",integrity:O.integrity}:{as:"script"}),P.default.createElement("script",{nonce:I,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([f])+")"}})):(O.dangerouslySetInnerHTML&&(O.children=O.dangerouslySetInnerHTML.__html,delete O.dangerouslySetInnerHTML),P.default.createElement("script",{nonce:I,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{...O}])+")"}}));"afterInteractive"===E&&f&&y.default.preload(f,O.integrity?{as:"script",integrity:O.integrity}:{as:"script"})}return null}Object.defineProperty(Script,"__nextScript",{value:!0});let j=Script;("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},5677:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return reportToSocket}});let h=f(2114);function reportToSocket(l){if("ended"!==l.state.state)throw Error("Expected span to be ended");(0,h.sendMessage)(JSON.stringify({event:"span-end",startTime:l.startTime,endTime:l.state.endTime,spanName:l.name,attributes:l.attributes}))}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},5944:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return y}});let h=f(8754),g=h._(f(6860));let Span=class Span{end(l){if("ended"===this.state.state)throw Error("Span has already ended");this.state={state:"ended",endTime:null!=l?l:Date.now()},this.onSpanEnd(this)}constructor(l,d,f){var h,g;this.name=l,this.attributes=null!=(h=d.attributes)?h:{},this.startTime=null!=(g=d.startTime)?g:Date.now(),this.onSpanEnd=f,this.state={state:"inprogress"}}};let Tracer=class Tracer{startSpan(l,d){return new Span(l,d,this.handleSpanEnd)}onSpanEnd(l){return this._emitter.on("spanend",l),()=>{this._emitter.off("spanend",l)}}constructor(){this._emitter=(0,g.default)(),this.handleSpanEnd=l=>{this._emitter.emit("spanend",l)}}};let y=new Tracer;("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6912:function(l,d){"use strict";let f;function getPolicy(){if(void 0===f){var l;f=(null==(l=window.trustedTypes)?void 0:l.createPolicy("nextjs",{createHTML:l=>l,createScript:l=>l,createScriptURL:l=>l}))||null}return f}function __unsafeCreateTrustedScriptURL(l){var d;return(null==(d=getPolicy())?void 0:d.createScriptURL(l))||l}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"__unsafeCreateTrustedScriptURL",{enumerable:!0,get:function(){return __unsafeCreateTrustedScriptURL}}),("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},3737:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),f(4878),self.__next_set_public_path__=l=>{f.p=l},("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},3591:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return withRouter}});let h=f(8754),g=h._(f(7294)),y=f(9974);function withRouter(l){function WithRouterWrapper(d){return g.default.createElement(l,{router:(0,y.useRouter)(),...d})}return WithRouterWrapper.getInitialProps=l.getInitialProps,WithRouterWrapper.origGetInitialProps=l.origGetInitialProps,WithRouterWrapper}("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},1337:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return App}});let h=f(8754),g=h._(f(7294)),y=f(109);async function appGetInitialProps(l){let{Component:d,ctx:f}=l,h=await (0,y.loadGetInitialProps)(d,f);return{pageProps:h}}let App=class App extends g.default.Component{render(){let{Component:l,pageProps:d}=this.props;return g.default.createElement(l,d)}};App.origGetInitialProps=appGetInitialProps,App.getInitialProps=appGetInitialProps,("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6908:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return Error}});let h=f(8754),g=h._(f(7294)),y=h._(f(9201)),P={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function _getInitialProps(l){let{res:d,err:f}=l,h=d&&d.statusCode?d.statusCode:f?f.statusCode:404;return{statusCode:h}}let b={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};let Error=class Error extends g.default.Component{render(){let{statusCode:l,withDarkMode:d=!0}=this.props,f=this.props.title||P[l]||"An unexpected error has occurred";return g.default.createElement("div",{style:b.error},g.default.createElement(y.default,null,g.default.createElement("title",null,l?l+": "+f:"Application error: a client-side exception has occurred")),g.default.createElement("div",{style:b.desc},g.default.createElement("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(d?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),l?g.default.createElement("h1",{className:"next-error-h1",style:b.h1},l):null,g.default.createElement("div",{style:b.wrap},g.default.createElement("h2",{style:b.h2},this.props.title||l?f:g.default.createElement(g.default.Fragment,null,"Application error: a client-side exception has occurred (see the browser console for more information)"),"."))))}};Error.displayName="ErrorPage",Error.getInitialProps=_getInitialProps,Error.origGetInitialProps=_getInitialProps,("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},6861:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"AmpStateContext",{enumerable:!0,get:function(){return y}});let h=f(8754),g=h._(f(7294)),y=g.default.createContext({})},7543:function(l,d){"use strict";function isInAmpMode(l){let{ampFirst:d=!1,hybrid:f=!1,hasQuery:h=!1}=void 0===l?{}:l;return d||f&&h}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isInAmpMode",{enumerable:!0,get:function(){return isInAmpMode}})},9031:function(l,d,f){"use strict";var h,g;Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{CacheStates:function(){return h},AppRouterContext:function(){return b},LayoutRouterContext:function(){return E},GlobalLayoutRouterContext:function(){return S},TemplateContext:function(){return w}});let y=f(8754),P=y._(f(7294));(g=h||(h={})).LAZY_INITIALIZED="LAZYINITIALIZED",g.DATA_FETCH="DATAFETCH",g.READY="READY";let b=P.default.createContext(null),E=P.default.createContext(null),S=P.default.createContext(null),w=P.default.createContext(null)},684:function(l,d){"use strict";function murmurhash2(l){let d=0;for(let f=0;f>>13,d=Math.imul(d,1540483477)}return d>>>0}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"BloomFilter",{enumerable:!0,get:function(){return BloomFilter}});let BloomFilter=class BloomFilter{static from(l,d){void 0===d&&(d=.01);let f=new BloomFilter(l.length,d);for(let d of l)f.add(d);return f}export(){let l={numItems:this.numItems,errorRate:this.errorRate,numBits:this.numBits,numHashes:this.numHashes,bitArray:this.bitArray};return l}import(l){this.numItems=l.numItems,this.errorRate=l.errorRate,this.numBits=l.numBits,this.numHashes=l.numHashes,this.bitArray=l.bitArray}add(l){let d=this.getHashValues(l);d.forEach(l=>{this.bitArray[l]=1})}contains(l){let d=this.getHashValues(l);return d.every(l=>this.bitArray[l])}getHashValues(l){let d=[];for(let f=1;f<=this.numHashes;f++){let h=murmurhash2(""+l+f)%this.numBits;d.push(h)}return d}constructor(l,d){this.numItems=l,this.errorRate=d,this.numBits=Math.ceil(-(l*Math.log(d))/(Math.log(2)*Math.log(2))),this.numHashes=Math.ceil(this.numBits/l*Math.log(2)),this.bitArray=Array(this.numBits).fill(0)}}},2338:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{MODERN_BROWSERSLIST_TARGET:function(){return g.default},COMPILER_NAMES:function(){return y},INTERNAL_HEADERS:function(){return P},COMPILER_INDEXES:function(){return b},PHASE_EXPORT:function(){return E},PHASE_PRODUCTION_BUILD:function(){return S},PHASE_PRODUCTION_SERVER:function(){return w},PHASE_DEVELOPMENT_SERVER:function(){return R},PHASE_TEST:function(){return O},PHASE_INFO:function(){return j},PAGES_MANIFEST:function(){return A},APP_PATHS_MANIFEST:function(){return M},APP_PATH_ROUTES_MANIFEST:function(){return C},BUILD_MANIFEST:function(){return I},APP_BUILD_MANIFEST:function(){return L},FUNCTIONS_CONFIG_MANIFEST:function(){return x},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return N},NEXT_FONT_MANIFEST:function(){return D},EXPORT_MARKER:function(){return k},EXPORT_DETAIL:function(){return F},PRERENDER_MANIFEST:function(){return U},ROUTES_MANIFEST:function(){return H},IMAGES_MANIFEST:function(){return B},SERVER_FILES_MANIFEST:function(){return W},DEV_CLIENT_PAGES_MANIFEST:function(){return q},MIDDLEWARE_MANIFEST:function(){return z},DEV_MIDDLEWARE_MANIFEST:function(){return G},REACT_LOADABLE_MANIFEST:function(){return V},FONT_MANIFEST:function(){return X},SERVER_DIRECTORY:function(){return K},CONFIG_FILES:function(){return Y},BUILD_ID_FILE:function(){return Q},BLOCKED_PAGES:function(){return $},CLIENT_PUBLIC_FILES_PATH:function(){return J},CLIENT_STATIC_FILES_PATH:function(){return Z},STRING_LITERAL_DROP_BUNDLE:function(){return ee},NEXT_BUILTIN_DOCUMENT:function(){return et},BARREL_OPTIMIZATION_PREFIX:function(){return er},CLIENT_REFERENCE_MANIFEST:function(){return en},SERVER_REFERENCE_MANIFEST:function(){return ea},MIDDLEWARE_BUILD_MANIFEST:function(){return eo},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return el},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return eu},APP_CLIENT_INTERNALS:function(){return es},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ec},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return ed},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ef},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ep},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return eh},EDGE_RUNTIME_WEBPACK:function(){return em},TEMPORARY_REDIRECT_STATUS:function(){return eg},PERMANENT_REDIRECT_STATUS:function(){return e_},STATIC_PROPS_ID:function(){return ey},SERVER_PROPS_ID:function(){return ev},PAGE_SEGMENT_KEY:function(){return eP},GOOGLE_FONT_PROVIDER:function(){return eb},OPTIMIZED_FONT_PROVIDERS:function(){return eE},DEFAULT_SERIF_FONT:function(){return eS},DEFAULT_SANS_SERIF_FONT:function(){return ew},STATIC_STATUS_PAGES:function(){return eR},TRACE_OUTPUT_VERSION:function(){return eO},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ej},RSC_MODULE_TYPES:function(){return eA},EDGE_UNSUPPORTED_NODE_APIS:function(){return eT},SYSTEM_ENTRYPOINTS:function(){return eM}});let h=f(8754),g=h._(f(8855)),y={client:"client",server:"server",edgeServer:"edge-server"},P=["x-invoke-path","x-invoke-status","x-invoke-error","x-invoke-query","x-middleware-invoke"],b={[y.client]:0,[y.server]:1,[y.edgeServer]:2},E="phase-export",S="phase-production-build",w="phase-production-server",R="phase-development-server",O="phase-test",j="phase-info",A="pages-manifest.json",M="app-paths-manifest.json",C="app-path-routes-manifest.json",I="build-manifest.json",L="app-build-manifest.json",x="functions-config-manifest.json",N="subresource-integrity-manifest",D="next-font-manifest",k="export-marker.json",F="export-detail.json",U="prerender-manifest.json",H="routes-manifest.json",B="images-manifest.json",W="required-server-files.json",q="_devPagesManifest.json",z="middleware-manifest.json",G="_devMiddlewareManifest.json",V="react-loadable-manifest.json",X="font-manifest.json",K="server",Y=["next.config.js","next.config.mjs"],Q="BUILD_ID",$=["/_document","/_app","/_error"],J="public",Z="static",ee="__NEXT_DROP_CLIENT_FILE__",et="__NEXT_BUILTIN_DOCUMENT__",er="__barrel_optimize__",en="client-reference-manifest",ea="server-reference-manifest",eo="middleware-build-manifest",ei="middleware-react-loadable-manifest",el="main",eu=""+el+"-app",es="app-pages-internals",ec="react-refresh",ed="amp",ef="webpack",ep="polyfills",eh=Symbol(ep),em="edge-runtime-webpack",eg=307,e_=308,ey="__N_SSG",ev="__N_SSP",eP="__PAGE__",eb="https://fonts.googleapis.com/",eE=[{url:eb,preconnect:"https://fonts.gstatic.com"},{url:"https://use.typekit.net",preconnect:"https://use.typekit.net"}],eS={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ew={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},eR=["/500"],eO=1,ej=6e3,eA={client:"client",server:"server"},eT=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eM=new Set([el,ec,ed,eu]);("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},997:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"escapeStringRegexp",{enumerable:!0,get:function(){return escapeStringRegexp}});let f=/[|\\{}()[\]^$+*?.-]/,h=/[|\\{}()[\]^$+*?.-]/g;function escapeStringRegexp(l){return f.test(l)?l.replace(h,"\\$&"):l}},6734:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"HeadManagerContext",{enumerable:!0,get:function(){return y}});let h=f(8754),g=h._(f(7294)),y=g.default.createContext({})},9201:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{defaultHead:function(){return defaultHead},default:function(){return R}});let h=f(8754),g=f(1757),y=g._(f(7294)),P=h._(f(8955)),b=f(6861),E=f(6734),S=f(7543);function defaultHead(l){void 0===l&&(l=!1);let d=[y.default.createElement("meta",{charSet:"utf-8"})];return l||d.push(y.default.createElement("meta",{name:"viewport",content:"width=device-width"})),d}function onlyReactElement(l,d){return"string"==typeof d||"number"==typeof d?l:d.type===y.default.Fragment?l.concat(y.default.Children.toArray(d.props.children).reduce((l,d)=>"string"==typeof d||"number"==typeof d?l:l.concat(d),[])):l.concat(d)}f(1905);let w=["name","httpEquiv","charSet","itemProp"];function unique(){let l=new Set,d=new Set,f=new Set,h={};return g=>{let y=!0,P=!1;if(g.key&&"number"!=typeof g.key&&g.key.indexOf("$")>0){P=!0;let d=g.key.slice(g.key.indexOf("$")+1);l.has(d)?y=!1:l.add(d)}switch(g.type){case"title":case"base":d.has(g.type)?y=!1:d.add(g.type);break;case"meta":for(let l=0,d=w.length;l{let h=l.key||d;if(!f&&"link"===l.type&&l.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(d=>l.props.href.startsWith(d))){let d={...l.props||{}};return d["data-href"]=d.href,d.href=void 0,d["data-optimized-fonts"]=!0,y.default.cloneElement(l,d)}return y.default.cloneElement(l,{key:h})})}function Head(l){let{children:d}=l,f=(0,y.useContext)(b.AmpStateContext),h=(0,y.useContext)(E.HeadManagerContext);return y.default.createElement(P.default,{reduceComponentsToState:reduceComponents,headManager:h,inAmpMode:(0,S.isInAmpMode)(f)},d)}let R=Head;("function"==typeof d.default||"object"==typeof d.default&&null!==d.default)&&void 0===d.default.__esModule&&(Object.defineProperty(d.default,"__esModule",{value:!0}),Object.assign(d.default,d),l.exports=d.default)},1593:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{SearchParamsContext:function(){return g},PathnameContext:function(){return y},PathParamsContext:function(){return P}});let h=f(7294),g=(0,h.createContext)(null),y=(0,h.createContext)(null),P=(0,h.createContext)(null)},1774:function(l,d){"use strict";function normalizeLocalePath(l,d){let f;let h=l.split("/");return(d||[]).some(d=>!!h[1]&&h[1].toLowerCase()===d.toLowerCase()&&(f=d,h.splice(1,1),l=h.join("/")||"/",!0)),{pathname:l,detectedLocale:f}}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"normalizeLocalePath",{enumerable:!0,get:function(){return normalizeLocalePath}})},869:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"ImageConfigContext",{enumerable:!0,get:function(){return P}});let h=f(8754),g=h._(f(7294)),y=f(5494),P=g.default.createContext(y.imageConfigDefault)},5494:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{VALID_LOADERS:function(){return f},imageConfigDefault:function(){return h}});let f=["default","imgix","cloudinary","akamai","custom"],h={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"inline",remotePatterns:[],unoptimized:!1}},5585:function(l,d){"use strict";function getObjectClassLabel(l){return Object.prototype.toString.call(l)}function isPlainObject(l){if("[object Object]"!==getObjectClassLabel(l))return!1;let d=Object.getPrototypeOf(l);return null===d||d.hasOwnProperty("isPrototypeOf")}Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{getObjectClassLabel:function(){return getObjectClassLabel},isPlainObject:function(){return isPlainObject}})},6146:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{NEXT_DYNAMIC_NO_SSR_CODE:function(){return f},throwWithNoSSR:function(){return throwWithNoSSR}});let f="NEXT_DYNAMIC_NO_SSR_CODE";function throwWithNoSSR(){let l=Error(f);throw l.digest=f,l}},6860:function(l,d){"use strict";function mitt(){let l=Object.create(null);return{on(d,f){(l[d]||(l[d]=[])).push(f)},off(d,f){l[d]&&l[d].splice(l[d].indexOf(f)>>>0,1)},emit(d){for(var f=arguments.length,h=Array(f>1?f-1:0),g=1;g{l(...h)})}}}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return mitt}})},8855:function(l){"use strict";l.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},3035:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"denormalizePagePath",{enumerable:!0,get:function(){return denormalizePagePath}});let h=f(8410),g=f(9153);function denormalizePagePath(l){let d=(0,g.normalizePathSep)(l);return d.startsWith("/index/")&&!(0,h.isDynamicRoute)(d)?d.slice(6):"/index"!==d?d:"/"}},504:function(l,d){"use strict";function ensureLeadingSlash(l){return l.startsWith("/")?l:"/"+l}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"ensureLeadingSlash",{enumerable:!0,get:function(){return ensureLeadingSlash}})},9153:function(l,d){"use strict";function normalizePathSep(l){return l.replace(/\\/g,"/")}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"normalizePathSep",{enumerable:!0,get:function(){return normalizePathSep}})},1823:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"RouterContext",{enumerable:!0,get:function(){return y}});let h=f(8754),g=h._(f(7294)),y=g.default.createContext(null)},9642:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{adaptForAppRouterInstance:function(){return adaptForAppRouterInstance},adaptForSearchParams:function(){return adaptForSearchParams},adaptForPathParams:function(){return adaptForPathParams},PathnameContextProviderAdapter:function(){return PathnameContextProviderAdapter}});let h=f(1757),g=h._(f(7294)),y=f(1593),P=f(8410),b=f(106),E=f(2839);function adaptForAppRouterInstance(l){return{back(){l.back()},forward(){l.forward()},refresh(){l.reload()},push(d,f){let{scroll:h}=void 0===f?{}:f;l.push(d,void 0,{scroll:h})},replace(d,f){let{scroll:h}=void 0===f?{}:f;l.replace(d,void 0,{scroll:h})},prefetch(d){l.prefetch(d)}}}function adaptForSearchParams(l){return l.isReady&&l.query?(0,b.asPathToSearchParams)(l.asPath):new URLSearchParams}function adaptForPathParams(l){if(!l.isReady||!l.query)return null;let d={},f=(0,E.getRouteRegex)(l.pathname),h=Object.keys(f.groups);for(let f of h)d[f]=l.query[f];return d}function PathnameContextProviderAdapter(l){let{children:d,router:f,...h}=l,b=(0,g.useRef)(h.isAutoExport),E=(0,g.useMemo)(()=>{let l;let d=b.current;if(d&&(b.current=!1),(0,P.isDynamicRoute)(f.pathname)&&(f.isFallback||d&&!f.isReady))return null;try{l=new URL(f.asPath,"http://f")}catch(l){return"/"}return l.pathname},[f.asPath,f.isFallback,f.isReady,f.pathname]);return g.default.createElement(y.PathnameContext.Provider,{value:E},d)}},2997:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{default:function(){return Router},matchesMiddleware:function(){return matchesMiddleware},createKey:function(){return createKey}});let h=f(8754),g=f(1757),y=f(7425),P=f(769),b=f(5354),E=g._(f(676)),S=f(3035),w=f(1774),R=h._(f(6860)),O=f(109),j=f(9203),A=f(1748);f(2431);let M=f(2142),C=f(2839),I=f(4364);f(6728);let L=f(1156),x=f(3607),N=f(5637),D=f(8961),k=f(7192),F=f(6864),U=f(4450),H=f(9423),B=f(7007),W=f(7841),q=f(7763),z=f(2227),G=f(5119),V=f(6455),X=f(2969),K=f(3937);function buildCancellationError(){return Object.assign(Error("Route Cancelled"),{cancelled:!0})}async function matchesMiddleware(l){let d=await Promise.resolve(l.router.pageLoader.getMiddleware());if(!d)return!1;let{pathname:f}=(0,L.parsePath)(l.asPath),h=(0,F.hasBasePath)(f)?(0,D.removeBasePath)(f):f,g=(0,k.addBasePath)((0,x.addLocale)(h,l.locale));return d.some(l=>new RegExp(l.regexp).test(g))}function stripOrigin(l){let d=(0,O.getLocationOrigin)();return l.startsWith(d)?l.substring(d.length):l}function prepareUrlAs(l,d,f){let[h,g]=(0,U.resolveHref)(l,d,!0),y=(0,O.getLocationOrigin)(),P=h.startsWith(y),b=g&&g.startsWith(y);h=stripOrigin(h),g=g?stripOrigin(g):g;let E=P?h:(0,k.addBasePath)(h),S=f?stripOrigin((0,U.resolveHref)(l,f)):g||h;return{url:E,as:b?S:(0,k.addBasePath)(S)}}function resolveDynamicRoute(l,d){let f=(0,y.removeTrailingSlash)((0,S.denormalizePagePath)(l));return"/404"===f||"/_error"===f?l:(d.includes(f)||d.some(d=>{if((0,j.isDynamicRoute)(d)&&(0,C.getRouteRegex)(d).re.test(f))return l=d,!0}),(0,y.removeTrailingSlash)(l))}function getMiddlewareData(l,d,f){let h={basePath:f.router.basePath,i18n:{locales:f.router.locales},trailingSlash:!1},g=d.headers.get("x-nextjs-rewrite"),b=g||d.headers.get("x-nextjs-matched-path"),E=d.headers.get("x-matched-path");if(!E||b||E.includes("__next_data_catchall")||E.includes("/_error")||E.includes("/404")||(b=E),b){if(b.startsWith("/")){let d=(0,A.parseRelativeUrl)(b),E=(0,B.getNextPathnameInfo)(d.pathname,{nextConfig:h,parseData:!0}),S=(0,y.removeTrailingSlash)(E.pathname);return Promise.all([f.router.pageLoader.getPageList(),(0,P.getClientBuildManifest)()]).then(y=>{let[P,{__rewrites:b}]=y,R=(0,x.addLocale)(E.pathname,E.locale);if((0,j.isDynamicRoute)(R)||!g&&P.includes((0,w.normalizeLocalePath)((0,D.removeBasePath)(R),f.router.locales).pathname)){let f=(0,B.getNextPathnameInfo)((0,A.parseRelativeUrl)(l).pathname,{nextConfig:h,parseData:!0});R=(0,k.addBasePath)(f.pathname),d.pathname=R}if(!P.includes(S)){let l=resolveDynamicRoute(S,P);l!==S&&(S=l)}let O=P.includes(S)?S:resolveDynamicRoute((0,w.normalizeLocalePath)((0,D.removeBasePath)(d.pathname),f.router.locales).pathname,P);if((0,j.isDynamicRoute)(O)){let l=(0,M.getRouteMatcher)((0,C.getRouteRegex)(O))(R);Object.assign(d.query,l||{})}return{type:"rewrite",parsedAs:d,resolvedHref:O}})}let d=(0,L.parsePath)(l),E=(0,W.formatNextPathnameInfo)({...(0,B.getNextPathnameInfo)(d.pathname,{nextConfig:h,parseData:!0}),defaultLocale:f.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-external",destination:""+E+d.query+d.hash})}let S=d.headers.get("x-nextjs-redirect");if(S){if(S.startsWith("/")){let l=(0,L.parsePath)(S),d=(0,W.formatNextPathnameInfo)({...(0,B.getNextPathnameInfo)(l.pathname,{nextConfig:h,parseData:!0}),defaultLocale:f.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-internal",newAs:""+d+l.query+l.hash,newUrl:""+d+l.query+l.hash})}return Promise.resolve({type:"redirect-external",destination:S})}return Promise.resolve({type:"next"})}async function withMiddlewareEffects(l){let d=await matchesMiddleware(l);if(!d||!l.fetchData)return null;try{let d=await l.fetchData(),f=await getMiddlewareData(d.dataHref,d.response,l);return{dataHref:d.dataHref,json:d.json,response:d.response,text:d.text,cacheKey:d.cacheKey,effect:f}}catch(l){return null}}let Y=Symbol("SSG_DATA_NOT_FOUND");function fetchRetry(l,d,f){return fetch(l,{credentials:"same-origin",method:f.method||"GET",headers:Object.assign({},f.headers,{"x-nextjs-data":"1"})}).then(h=>!h.ok&&d>1&&h.status>=500?fetchRetry(l,d-1,f):h)}function tryToParseAsJSON(l){try{return JSON.parse(l)}catch(l){return null}}function fetchNextData(l){var d;let{dataHref:f,inflightCache:h,isPrefetch:g,hasMiddleware:y,isServerRender:b,parseJSON:E,persistCache:S,isBackground:w,unstable_skipClientCache:R}=l,{href:O}=new URL(f,window.location.href),getData=l=>fetchRetry(f,b?3:1,{headers:Object.assign({},g?{purpose:"prefetch"}:{},g&&y?{"x-middleware-prefetch":"1"}:{}),method:null!=(d=null==l?void 0:l.method)?d:"GET"}).then(d=>d.ok&&(null==l?void 0:l.method)==="HEAD"?{dataHref:f,response:d,text:"",json:{},cacheKey:O}:d.text().then(l=>{if(!d.ok){if(y&&[301,302,307,308].includes(d.status))return{dataHref:f,response:d,text:l,json:{},cacheKey:O};if(404===d.status){var h;if(null==(h=tryToParseAsJSON(l))?void 0:h.notFound)return{dataHref:f,json:{notFound:Y},response:d,text:l,cacheKey:O}}let g=Error("Failed to load static props");throw b||(0,P.markAssetError)(g),g}return{dataHref:f,json:E?tryToParseAsJSON(l):null,response:d,text:l,cacheKey:O}})).then(l=>(S&&"no-cache"!==l.response.headers.get("x-middleware-cache")||delete h[O],l)).catch(l=>{throw R||delete h[O],("Failed to fetch"===l.message||"NetworkError when attempting to fetch resource."===l.message||"Load failed"===l.message)&&(0,P.markAssetError)(l),l});return R&&S?getData({}).then(l=>(h[O]=Promise.resolve(l),l)):void 0!==h[O]?h[O]:h[O]=getData(w?{method:"HEAD"}:{})}function createKey(){return Math.random().toString(36).slice(2,10)}function handleHardNavigation(l){let{url:d,router:f}=l;if(d===(0,k.addBasePath)((0,x.addLocale)(f.asPath,f.locale)))throw Error("Invariant: attempted to hard navigate to the same URL "+d+" "+location.href);window.location.href=d}let getCancelledHandler=l=>{let{route:d,router:f}=l,h=!1,g=f.clc=()=>{h=!0};return()=>{if(h){let l=Error('Abort fetching component for route: "'+d+'"');throw l.cancelled=!0,l}g===f.clc&&(f.clc=null)}};let Router=class Router{reload(){window.location.reload()}back(){window.history.back()}forward(){window.history.forward()}push(l,d,f){return void 0===f&&(f={}),{url:l,as:d}=prepareUrlAs(this,l,d),this.change("pushState",l,d,f)}replace(l,d,f){return void 0===f&&(f={}),{url:l,as:d}=prepareUrlAs(this,l,d),this.change("replaceState",l,d,f)}async _bfl(l,d,f,h){{let E=!1,S=!1;for(let w of[l,d])if(w){let d=(0,y.removeTrailingSlash)(new URL(w,"http://n").pathname),R=(0,k.addBasePath)((0,x.addLocale)(d,f||this.locale));if(d!==(0,y.removeTrailingSlash)(new URL(this.asPath,"http://n").pathname)){var g,P,b;for(let l of(E=E||!!(null==(g=this._bfl_s)?void 0:g.contains(d))||!!(null==(P=this._bfl_s)?void 0:P.contains(R)),[d,R])){let d=l.split("/");for(let l=0;!S&&l{})}}}}return!1}async change(l,d,f,h,g){var S,w,R,U,H,B,W,G,K;let Q,$;if(!(0,z.isLocalURL)(d))return handleHardNavigation({url:d,router:this}),!1;let J=1===h._h;J||h.shallow||await this._bfl(f,void 0,h.locale);let Z=J||h._shouldResolveHref||(0,L.parsePath)(d).pathname===(0,L.parsePath)(f).pathname,ee={...this.state},et=!0!==this.isReady;this.isReady=!0;let er=this.isSsr;if(J||(this.isSsr=!1),J&&this.clc)return!1;let en=ee.locale;O.ST&&performance.mark("routeChange");let{shallow:ea=!1,scroll:eo=!0}=h,ei={shallow:ea};this._inFlightRoute&&this.clc&&(er||Router.events.emit("routeChangeError",buildCancellationError(),this._inFlightRoute,ei),this.clc(),this.clc=null),f=(0,k.addBasePath)((0,x.addLocale)((0,F.hasBasePath)(f)?(0,D.removeBasePath)(f):f,h.locale,this.defaultLocale));let el=(0,N.removeLocale)((0,F.hasBasePath)(f)?(0,D.removeBasePath)(f):f,ee.locale);this._inFlightRoute=f;let eu=en!==ee.locale;if(!J&&this.onlyAHashChange(el)&&!eu){ee.asPath=el,Router.events.emit("hashChangeStart",f,ei),this.changeState(l,d,f,{...h,scroll:!1}),eo&&this.scrollToHash(el);try{await this.set(ee,this.components[ee.route],null)}catch(l){throw(0,E.default)(l)&&l.cancelled&&Router.events.emit("routeChangeError",l,el,ei),l}return Router.events.emit("hashChangeComplete",f,ei),!0}let es=(0,A.parseRelativeUrl)(d),{pathname:ec,query:ed}=es;if(null==(S=this.components[ec])?void 0:S.__appRouter)return handleHardNavigation({url:f,router:this}),new Promise(()=>{});try{[Q,{__rewrites:$}]=await Promise.all([this.pageLoader.getPageList(),(0,P.getClientBuildManifest)(),this.pageLoader.getMiddleware()])}catch(l){return handleHardNavigation({url:f,router:this}),!1}this.urlIsNew(el)||eu||(l="replaceState");let ef=f;ec=ec?(0,y.removeTrailingSlash)((0,D.removeBasePath)(ec)):ec;let ep=(0,y.removeTrailingSlash)(ec),eh=f.startsWith("/")&&(0,A.parseRelativeUrl)(f).pathname,em=!!(eh&&ep!==eh&&(!(0,j.isDynamicRoute)(ep)||!(0,M.getRouteMatcher)((0,C.getRouteRegex)(ep))(eh))),eg=!h.shallow&&await matchesMiddleware({asPath:f,locale:ee.locale,router:this});if(J&&eg&&(Z=!1),Z&&"/_error"!==ec&&(h._shouldResolveHref=!0,es.pathname=resolveDynamicRoute(ec,Q),es.pathname===ec||(ec=es.pathname,es.pathname=(0,k.addBasePath)(ec),eg||(d=(0,I.formatWithValidation)(es)))),!(0,z.isLocalURL)(f))return handleHardNavigation({url:f,router:this}),!1;ef=(0,N.removeLocale)((0,D.removeBasePath)(ef),ee.locale),ep=(0,y.removeTrailingSlash)(ec);let e_=!1;if((0,j.isDynamicRoute)(ep)){let l=(0,A.parseRelativeUrl)(ef),h=l.pathname,g=(0,C.getRouteRegex)(ep);e_=(0,M.getRouteMatcher)(g)(h);let y=ep===h,P=y?(0,X.interpolateAs)(ep,h,ed):{};if(e_&&(!y||P.result))y?f=(0,I.formatWithValidation)(Object.assign({},l,{pathname:P.result,query:(0,V.omit)(ed,P.params)})):Object.assign(ed,e_);else{let l=Object.keys(g.groups).filter(l=>!ed[l]&&!g.groups[l].optional);if(l.length>0&&!eg)throw Error((y?"The provided `href` ("+d+") value is missing query values ("+l.join(", ")+") to be interpolated properly. ":"The provided `as` value ("+h+") is incompatible with the `href` value ("+ep+"). ")+"Read more: https://nextjs.org/docs/messages/"+(y?"href-interpolation-failed":"incompatible-href-as"))}}J||Router.events.emit("routeChangeStart",f,ei);let ey="/404"===this.pathname||"/_error"===this.pathname;try{let y=await this.getRouteInfo({route:ep,pathname:ec,query:ed,as:f,resolvedAs:ef,routeProps:ei,locale:ee.locale,isPreview:ee.isPreview,hasMiddleware:eg,unstable_skipClientCache:h.unstable_skipClientCache,isQueryUpdating:J&&!this.isFallback,isMiddlewareRewrite:em});if(J||h.shallow||await this._bfl(f,"resolvedAs"in y?y.resolvedAs:void 0,ee.locale),"route"in y&&eg){ep=ec=y.route||ep,ei.shallow||(ed=Object.assign({},y.query||{},ed));let l=(0,F.hasBasePath)(es.pathname)?(0,D.removeBasePath)(es.pathname):es.pathname;if(e_&&ec!==l&&Object.keys(e_).forEach(l=>{e_&&ed[l]===e_[l]&&delete ed[l]}),(0,j.isDynamicRoute)(ec)){let l=!ei.shallow&&y.resolvedAs?y.resolvedAs:(0,k.addBasePath)((0,x.addLocale)(new URL(f,location.href).pathname,ee.locale),!0),d=l;(0,F.hasBasePath)(d)&&(d=(0,D.removeBasePath)(d));let h=(0,C.getRouteRegex)(ec),g=(0,M.getRouteMatcher)(h)(new URL(d,location.href).pathname);g&&Object.assign(ed,g)}}if("type"in y){if("redirect-internal"===y.type)return this.change(l,y.newUrl,y.newAs,h);return handleHardNavigation({url:y.destination,router:this}),new Promise(()=>{})}let P=y.Component;if(P&&P.unstable_scriptLoader){let l=[].concat(P.unstable_scriptLoader());l.forEach(l=>{(0,b.handleClientScriptLoad)(l.props)})}if((y.__N_SSG||y.__N_SSP)&&y.props){if(y.props.pageProps&&y.props.pageProps.__N_REDIRECT){h.locale=!1;let d=y.props.pageProps.__N_REDIRECT;if(d.startsWith("/")&&!1!==y.props.pageProps.__N_REDIRECT_BASE_PATH){let f=(0,A.parseRelativeUrl)(d);f.pathname=resolveDynamicRoute(f.pathname,Q);let{url:g,as:y}=prepareUrlAs(this,d,d);return this.change(l,g,y,h)}return handleHardNavigation({url:d,router:this}),new Promise(()=>{})}if(ee.isPreview=!!y.props.__N_PREVIEW,y.props.notFound===Y){let l;try{await this.fetchComponent("/404"),l="/404"}catch(d){l="/_error"}if(y=await this.getRouteInfo({route:l,pathname:l,query:ed,as:f,resolvedAs:ef,routeProps:{shallow:!1},locale:ee.locale,isPreview:ee.isPreview,isNotFound:!0}),"type"in y)throw Error("Unexpected middleware effect on /404")}}J&&"/_error"===this.pathname&&(null==(R=self.__NEXT_DATA__.props)?void 0:null==(w=R.pageProps)?void 0:w.statusCode)===500&&(null==(U=y.props)?void 0:U.pageProps)&&(y.props.pageProps.statusCode=500);let S=h.shallow&&ee.route===(null!=(H=y.route)?H:ep),O=null!=(B=h.scroll)?B:!J&&!S,I=null!=g?g:O?{x:0,y:0}:null,L={...ee,route:ep,pathname:ec,query:ed,asPath:el,isFallback:!1};if(J&&ey){if(y=await this.getRouteInfo({route:this.pathname,pathname:this.pathname,query:ed,as:f,resolvedAs:ef,routeProps:{shallow:!1},locale:ee.locale,isPreview:ee.isPreview,isQueryUpdating:J&&!this.isFallback}),"type"in y)throw Error("Unexpected middleware effect on "+this.pathname);"/_error"===this.pathname&&(null==(G=self.__NEXT_DATA__.props)?void 0:null==(W=G.pageProps)?void 0:W.statusCode)===500&&(null==(K=y.props)?void 0:K.pageProps)&&(y.props.pageProps.statusCode=500);try{await this.set(L,y,I)}catch(l){throw(0,E.default)(l)&&l.cancelled&&Router.events.emit("routeChangeError",l,el,ei),l}return!0}Router.events.emit("beforeHistoryChange",f,ei),this.changeState(l,d,f,h);let N=J&&!I&&!et&&!eu&&(0,q.compareRouterStates)(L,this.state);if(!N){try{await this.set(L,y,I)}catch(l){if(l.cancelled)y.error=y.error||l;else throw l}if(y.error)throw J||Router.events.emit("routeChangeError",y.error,el,ei),y.error;J||Router.events.emit("routeChangeComplete",f,ei),O&&/#.+$/.test(f)&&this.scrollToHash(f)}return!0}catch(l){if((0,E.default)(l)&&l.cancelled)return!1;throw l}}changeState(l,d,f,h){void 0===h&&(h={}),("pushState"!==l||(0,O.getURL)()!==f)&&(this._shallow=h.shallow,window.history[l]({url:d,as:f,options:h,__N:!0,key:this._key="pushState"!==l?this._key:createKey()},"",f))}async handleRouteInfoError(l,d,f,h,g,y){if(console.error(l),l.cancelled)throw l;if((0,P.isAssetError)(l)||y)throw Router.events.emit("routeChangeError",l,h,g),handleHardNavigation({url:h,router:this}),buildCancellationError();try{let h;let{page:g,styleSheets:y}=await this.fetchComponent("/_error"),P={props:h,Component:g,styleSheets:y,err:l,error:l};if(!P.props)try{P.props=await this.getInitialProps(g,{err:l,pathname:d,query:f})}catch(l){console.error("Error in error page `getInitialProps`: ",l),P.props={}}return P}catch(l){return this.handleRouteInfoError((0,E.default)(l)?l:Error(l+""),d,f,h,g,!0)}}async getRouteInfo(l){let{route:d,pathname:f,query:h,as:g,resolvedAs:P,routeProps:b,locale:S,hasMiddleware:R,isPreview:O,unstable_skipClientCache:j,isQueryUpdating:A,isMiddlewareRewrite:M,isNotFound:C}=l,L=d;try{var x,N,k,F;let l=getCancelledHandler({route:L,router:this}),d=this.components[L];if(b.shallow&&d&&this.route===L)return d;R&&(d=void 0);let E=!d||"initial"in d?void 0:d,U={dataHref:this.pageLoader.getDataHref({href:(0,I.formatWithValidation)({pathname:f,query:h}),skipInterpolation:!0,asPath:C?"/404":P,locale:S}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:A?this.sbc:this.sdc,persistCache:!O,isPrefetch:!1,unstable_skipClientCache:j,isBackground:A},B=A&&!M?null:await withMiddlewareEffects({fetchData:()=>fetchNextData(U),asPath:C?"/404":P,locale:S,router:this}).catch(l=>{if(A)return null;throw l});if(B&&("/_error"===f||"/404"===f)&&(B.effect=void 0),A&&(B?B.json=self.__NEXT_DATA__.props:B={json:self.__NEXT_DATA__.props}),l(),(null==B?void 0:null==(x=B.effect)?void 0:x.type)==="redirect-internal"||(null==B?void 0:null==(N=B.effect)?void 0:N.type)==="redirect-external")return B.effect;if((null==B?void 0:null==(k=B.effect)?void 0:k.type)==="rewrite"){let l=(0,y.removeTrailingSlash)(B.effect.resolvedHref),g=await this.pageLoader.getPageList();if((!A||g.includes(l))&&(L=l,f=B.effect.resolvedHref,h={...h,...B.effect.parsedAs.query},P=(0,D.removeBasePath)((0,w.normalizeLocalePath)(B.effect.parsedAs.pathname,this.locales).pathname),d=this.components[L],b.shallow&&d&&this.route===L&&!R))return{...d,route:L}}if((0,H.isAPIRoute)(L))return handleHardNavigation({url:g,router:this}),new Promise(()=>{});let W=E||await this.fetchComponent(L).then(l=>({Component:l.page,styleSheets:l.styleSheets,__N_SSG:l.mod.__N_SSG,__N_SSP:l.mod.__N_SSP})),q=null==B?void 0:null==(F=B.response)?void 0:F.headers.get("x-middleware-skip"),z=W.__N_SSG||W.__N_SSP;q&&(null==B?void 0:B.dataHref)&&delete this.sdc[B.dataHref];let{props:G,cacheKey:V}=await this._getData(async()=>{if(z){if((null==B?void 0:B.json)&&!q)return{cacheKey:B.cacheKey,props:B.json};let l=(null==B?void 0:B.dataHref)?B.dataHref:this.pageLoader.getDataHref({href:(0,I.formatWithValidation)({pathname:f,query:h}),asPath:P,locale:S}),d=await fetchNextData({dataHref:l,isServerRender:this.isSsr,parseJSON:!0,inflightCache:q?{}:this.sdc,persistCache:!O,isPrefetch:!1,unstable_skipClientCache:j});return{cacheKey:d.cacheKey,props:d.json||{}}}return{headers:{},props:await this.getInitialProps(W.Component,{pathname:f,query:h,asPath:g,locale:S,locales:this.locales,defaultLocale:this.defaultLocale})}});return W.__N_SSP&&U.dataHref&&V&&delete this.sdc[V],this.isPreview||!W.__N_SSG||A||fetchNextData(Object.assign({},U,{isBackground:!0,persistCache:!1,inflightCache:this.sbc})).catch(()=>{}),G.pageProps=Object.assign({},G.pageProps),W.props=G,W.route=L,W.query=h,W.resolvedAs=P,this.components[L]=W,W}catch(l){return this.handleRouteInfoError((0,E.getProperError)(l),f,h,g,b)}}set(l,d,f){return this.state=l,this.sub(d,this.components["/_app"].Component,f)}beforePopState(l){this._bps=l}onlyAHashChange(l){if(!this.asPath)return!1;let[d,f]=this.asPath.split("#",2),[h,g]=l.split("#",2);return!!g&&d===h&&f===g||d===h&&f!==g}scrollToHash(l){let[,d=""]=l.split("#",2);(0,K.handleSmoothScroll)(()=>{if(""===d||"top"===d){window.scrollTo(0,0);return}let l=decodeURIComponent(d),f=document.getElementById(l);if(f){f.scrollIntoView();return}let h=document.getElementsByName(l)[0];h&&h.scrollIntoView()},{onlyHashChange:this.onlyAHashChange(l)})}urlIsNew(l){return this.asPath!==l}async prefetch(l,d,f){if(void 0===d&&(d=l),void 0===f&&(f={}),(0,G.isBot)(window.navigator.userAgent))return;let h=(0,A.parseRelativeUrl)(l),g=h.pathname,{pathname:P,query:b}=h,E=P,S=await this.pageLoader.getPageList(),w=d,R=void 0!==f.locale?f.locale||void 0:this.locale,O=await matchesMiddleware({asPath:d,locale:R,router:this});h.pathname=resolveDynamicRoute(h.pathname,S),(0,j.isDynamicRoute)(h.pathname)&&(P=h.pathname,h.pathname=P,Object.assign(b,(0,M.getRouteMatcher)((0,C.getRouteRegex)(h.pathname))((0,L.parsePath)(d).pathname)||{}),O||(l=(0,I.formatWithValidation)(h)));let x=await withMiddlewareEffects({fetchData:()=>fetchNextData({dataHref:this.pageLoader.getDataHref({href:(0,I.formatWithValidation)({pathname:E,query:b}),skipInterpolation:!0,asPath:w,locale:R}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0}),asPath:d,locale:R,router:this});if((null==x?void 0:x.effect.type)==="rewrite"&&(h.pathname=x.effect.resolvedHref,P=x.effect.resolvedHref,b={...b,...x.effect.parsedAs.query},w=x.effect.parsedAs.pathname,l=(0,I.formatWithValidation)(h)),(null==x?void 0:x.effect.type)==="redirect-external")return;let N=(0,y.removeTrailingSlash)(P);await this._bfl(d,w,f.locale,!0)&&(this.components[g]={__appRouter:!0}),await Promise.all([this.pageLoader._isSsg(N).then(d=>!!d&&fetchNextData({dataHref:(null==x?void 0:x.json)?null==x?void 0:x.dataHref:this.pageLoader.getDataHref({href:l,asPath:w,locale:R}),isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0,unstable_skipClientCache:f.unstable_skipClientCache||f.priority&&!0}).then(()=>!1).catch(()=>!1)),this.pageLoader[f.priority?"loadPage":"prefetch"](N)])}async fetchComponent(l){let d=getCancelledHandler({route:l,router:this});try{let f=await this.pageLoader.loadPage(l);return d(),f}catch(l){throw d(),l}}_getData(l){let d=!1,cancel=()=>{d=!0};return this.clc=cancel,l().then(l=>{if(cancel===this.clc&&(this.clc=null),d){let l=Error("Loading initial props cancelled");throw l.cancelled=!0,l}return l})}_getFlightData(l){return fetchNextData({dataHref:l,isServerRender:!0,parseJSON:!1,inflightCache:this.sdc,persistCache:!1,isPrefetch:!1}).then(l=>{let{text:d}=l;return{data:d}})}getInitialProps(l,d){let{Component:f}=this.components["/_app"],h=this._wrapApp(f);return d.AppTree=h,(0,O.loadGetInitialProps)(f,{AppTree:h,Component:l,router:this,ctx:d})}get route(){return this.state.route}get pathname(){return this.state.pathname}get query(){return this.state.query}get asPath(){return this.state.asPath}get locale(){return this.state.locale}get isFallback(){return this.state.isFallback}get isPreview(){return this.state.isPreview}constructor(l,d,h,{initialProps:g,pageLoader:P,App:b,wrapApp:E,Component:S,err:w,subscription:R,isFallback:M,locale:C,locales:L,defaultLocale:x,domainLocales:N,isPreview:D}){this.sdc={},this.sbc={},this.isFirstPopStateEvent=!0,this._key=createKey(),this.onPopState=l=>{let d;let{isFirstPopStateEvent:f}=this;this.isFirstPopStateEvent=!1;let h=l.state;if(!h){let{pathname:l,query:d}=this;this.changeState("replaceState",(0,I.formatWithValidation)({pathname:(0,k.addBasePath)(l),query:d}),(0,O.getURL)());return}if(h.__NA){window.location.reload();return}if(!h.__N||f&&this.locale===h.options.locale&&h.as===this.asPath)return;let{url:g,as:y,options:P,key:b}=h;this._key=b;let{pathname:E}=(0,A.parseRelativeUrl)(g);(!this.isSsr||y!==(0,k.addBasePath)(this.asPath)||E!==(0,k.addBasePath)(this.pathname))&&(!this._bps||this._bps(h))&&this.change("replaceState",g,y,Object.assign({},P,{shallow:P.shallow&&this._shallow,locale:P.locale||this.defaultLocale,_h:0}),d)};let F=(0,y.removeTrailingSlash)(l);this.components={},"/_error"!==l&&(this.components[F]={Component:S,initial:!0,props:g,err:w,__N_SSG:g&&g.__N_SSG,__N_SSP:g&&g.__N_SSP}),this.components["/_app"]={Component:b,styleSheets:[]};{let{BloomFilter:l}=f(684),d={numItems:0,errorRate:.01,numBits:0,numHashes:null,bitArray:[]},h={numItems:0,errorRate:.01,numBits:0,numHashes:null,bitArray:[]};(null==d?void 0:d.numHashes)&&(this._bfl_s=new l(d.numItems,d.errorRate),this._bfl_s.import(d)),(null==h?void 0:h.numHashes)&&(this._bfl_d=new l(h.numItems,h.errorRate),this._bfl_d.import(h))}this.events=Router.events,this.pageLoader=P;let U=(0,j.isDynamicRoute)(l)&&self.__NEXT_DATA__.autoExport;if(this.basePath="",this.sub=R,this.clc=null,this._wrapApp=E,this.isSsr=!0,this.isLocaleDomain=!1,this.isReady=!!(self.__NEXT_DATA__.gssp||self.__NEXT_DATA__.gip||self.__NEXT_DATA__.isExperimentalCompile||self.__NEXT_DATA__.appGip&&!self.__NEXT_DATA__.gsp||!U&&!self.location.search),this.state={route:F,pathname:l,query:d,asPath:U?l:h,isPreview:!!D,locale:void 0,isFallback:M},this._initialMatchesMiddlewarePromise=Promise.resolve(!1),!h.startsWith("//")){let f={locale:C},g=(0,O.getURL)();this._initialMatchesMiddlewarePromise=matchesMiddleware({router:this,locale:C,asPath:g}).then(y=>(f._shouldResolveHref=h!==l,this.changeState("replaceState",y?g:(0,I.formatWithValidation)({pathname:(0,k.addBasePath)(l),query:d}),g,f),y))}window.addEventListener("popstate",this.onPopState)}};Router.events=(0,R.default)()},7699:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"addLocale",{enumerable:!0,get:function(){return addLocale}});let h=f(6063),g=f(387);function addLocale(l,d,f,y){if(!d||d===f)return l;let P=l.toLowerCase();return!y&&((0,g.pathHasPrefix)(P,"/api")||(0,g.pathHasPrefix)(P,"/"+d.toLowerCase()))?l:(0,h.addPathPrefix)(l,"/"+d)}},6063:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"addPathPrefix",{enumerable:!0,get:function(){return addPathPrefix}});let h=f(1156);function addPathPrefix(l,d){if(!l.startsWith("/")||!d)return l;let{pathname:f,query:g,hash:y}=(0,h.parsePath)(l);return""+d+f+g+y}},4233:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"addPathSuffix",{enumerable:!0,get:function(){return addPathSuffix}});let h=f(1156);function addPathSuffix(l,d){if(!l.startsWith("/")||!d)return l;let{pathname:f,query:g,hash:y}=(0,h.parsePath)(l);return""+f+d+g+y}},3090:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{normalizeAppPath:function(){return normalizeAppPath},normalizeRscURL:function(){return normalizeRscURL},normalizePostponedURL:function(){return normalizePostponedURL}});let h=f(504),g=f(6163);function normalizeAppPath(l){return(0,h.ensureLeadingSlash)(l.split("/").reduce((l,d,f,h)=>!d||(0,g.isGroupSegment)(d)||"@"===d[0]||("page"===d||"route"===d)&&f===h.length-1?l:l+"/"+d,""))}function normalizeRscURL(l){return l.replace(/\.rsc($|\?)/,"$1")}function normalizePostponedURL(l){let d=new URL(l),{pathname:f}=d;return f&&f.startsWith("/_next/postponed")?(d.pathname=f.substring(16)||"/",d.toString()):l}},106:function(l,d){"use strict";function asPathToSearchParams(l){return new URL(l,"http://n").searchParams}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"asPathToSearchParams",{enumerable:!0,get:function(){return asPathToSearchParams}})},7763:function(l,d){"use strict";function compareRouterStates(l,d){let f=Object.keys(l);if(f.length!==Object.keys(d).length)return!1;for(let h=f.length;h--;){let g=f[h];if("query"===g){let f=Object.keys(l.query);if(f.length!==Object.keys(d.query).length)return!1;for(let h=f.length;h--;){let g=f[h];if(!d.query.hasOwnProperty(g)||l.query[g]!==d.query[g])return!1}}else if(!d.hasOwnProperty(g)||l[g]!==d[g])return!1}return!0}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"compareRouterStates",{enumerable:!0,get:function(){return compareRouterStates}})},7841:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"formatNextPathnameInfo",{enumerable:!0,get:function(){return formatNextPathnameInfo}});let h=f(7425),g=f(6063),y=f(4233),P=f(7699);function formatNextPathnameInfo(l){let d=(0,P.addLocale)(l.pathname,l.locale,l.buildId?void 0:l.defaultLocale,l.ignorePrefix);return(l.buildId||!l.trailingSlash)&&(d=(0,h.removeTrailingSlash)(d)),l.buildId&&(d=(0,y.addPathSuffix)((0,g.addPathPrefix)(d,"/_next/data/"+l.buildId),"/"===l.pathname?"index.json":".json")),d=(0,g.addPathPrefix)(d,l.basePath),!l.buildId&&l.trailingSlash?d.endsWith("/")?d:(0,y.addPathSuffix)(d,"/"):(0,h.removeTrailingSlash)(d)}},4364:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{formatUrl:function(){return formatUrl},urlObjectKeys:function(){return P},formatWithValidation:function(){return formatWithValidation}});let h=f(1757),g=h._(f(5980)),y=/https?|ftp|gopher|file/;function formatUrl(l){let{auth:d,hostname:f}=l,h=l.protocol||"",P=l.pathname||"",b=l.hash||"",E=l.query||"",S=!1;d=d?encodeURIComponent(d).replace(/%3A/i,":")+"@":"",l.host?S=d+l.host:f&&(S=d+(~f.indexOf(":")?"["+f+"]":f),l.port&&(S+=":"+l.port)),E&&"object"==typeof E&&(E=String(g.urlQueryToSearchParams(E)));let w=l.search||E&&"?"+E||"";return h&&!h.endsWith(":")&&(h+=":"),l.slashes||(!h||y.test(h))&&!1!==S?(S="//"+(S||""),P&&"/"!==P[0]&&(P="/"+P)):S||(S=""),b&&"#"!==b[0]&&(b="#"+b),w&&"?"!==w[0]&&(w="?"+w),""+h+S+(P=P.replace(/[?#]/g,encodeURIComponent))+(w=w.replace("#","%23"))+b}let P=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function formatWithValidation(l){return formatUrl(l)}},8356:function(l,d){"use strict";function getAssetPathFromRoute(l,d){void 0===d&&(d="");let f="/"===l?"/index":/^\/index(\/|$)/.test(l)?"/index"+l:""+l;return f+d}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return getAssetPathFromRoute}})},7007:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"getNextPathnameInfo",{enumerable:!0,get:function(){return getNextPathnameInfo}});let h=f(1774),g=f(2531),y=f(387);function getNextPathnameInfo(l,d){var f,P;let{basePath:b,i18n:E,trailingSlash:S}=null!=(f=d.nextConfig)?f:{},w={pathname:l,trailingSlash:"/"!==l?l.endsWith("/"):S};b&&(0,y.pathHasPrefix)(w.pathname,b)&&(w.pathname=(0,g.removePathPrefix)(w.pathname,b),w.basePath=b);let R=w.pathname;if(w.pathname.startsWith("/_next/data/")&&w.pathname.endsWith(".json")){let l=w.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/"),f=l[0];w.buildId=f,R="index"!==l[1]?"/"+l.slice(1).join("/"):"/",!0===d.parseData&&(w.pathname=R)}if(E){let l=d.i18nProvider?d.i18nProvider.analyze(w.pathname):(0,h.normalizeLocalePath)(w.pathname,E.locales);w.locale=l.detectedLocale,w.pathname=null!=(P=l.pathname)?P:w.pathname,!l.detectedLocale&&w.buildId&&(l=d.i18nProvider?d.i18nProvider.analyze(R):(0,h.normalizeLocalePath)(R,E.locales)).detectedLocale&&(w.locale=l.detectedLocale)}return w}},3937:function(l,d){"use strict";function handleSmoothScroll(l,d){if(void 0===d&&(d={}),d.onlyHashChange){l();return}let f=document.documentElement,h=f.style.scrollBehavior;f.style.scrollBehavior="auto",d.dontForceLayout||f.getClientRects(),l(),f.style.scrollBehavior=h}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"handleSmoothScroll",{enumerable:!0,get:function(){return handleSmoothScroll}})},8410:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{getSortedRoutes:function(){return h.getSortedRoutes},isDynamicRoute:function(){return g.isDynamicRoute}});let h=f(2677),g=f(9203)},2969:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"interpolateAs",{enumerable:!0,get:function(){return interpolateAs}});let h=f(2142),g=f(2839);function interpolateAs(l,d,f){let y="",P=(0,g.getRouteRegex)(l),b=P.groups,E=(d!==l?(0,h.getRouteMatcher)(P)(d):"")||f;y=l;let S=Object.keys(b);return S.every(l=>{let d=E[l]||"",{repeat:f,optional:h}=b[l],g="["+(f?"...":"")+l+"]";return h&&(g=(d?"":"/")+"["+g+"]"),f&&!Array.isArray(d)&&(d=[d]),(h||l in E)&&(y=y.replace(g,f?d.map(l=>encodeURIComponent(l)).join("/"):encodeURIComponent(d))||"/")})||(y=""),{params:S,result:y}}},5119:function(l,d){"use strict";function isBot(l){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(l)}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isBot",{enumerable:!0,get:function(){return isBot}})},9203:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isDynamicRoute",{enumerable:!0,get:function(){return isDynamicRoute}});let f=/\/\[[^/]+?\](?=\/|$)/;function isDynamicRoute(l){return f.test(l)}},2227:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isLocalURL",{enumerable:!0,get:function(){return isLocalURL}});let h=f(109),g=f(6864);function isLocalURL(l){if(!(0,h.isAbsoluteUrl)(l))return!0;try{let d=(0,h.getLocationOrigin)(),f=new URL(l,d);return f.origin===d&&(0,g.hasBasePath)(f.pathname)}catch(l){return!1}}},6455:function(l,d){"use strict";function omit(l,d){let f={};return Object.keys(l).forEach(h=>{d.includes(h)||(f[h]=l[h])}),f}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"omit",{enumerable:!0,get:function(){return omit}})},1156:function(l,d){"use strict";function parsePath(l){let d=l.indexOf("#"),f=l.indexOf("?"),h=f>-1&&(d<0||f-1?{pathname:l.substring(0,h?f:d),query:h?l.substring(f,d>-1?d:void 0):"",hash:d>-1?l.slice(d):""}:{pathname:l,query:"",hash:""}}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"parsePath",{enumerable:!0,get:function(){return parsePath}})},1748:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"parseRelativeUrl",{enumerable:!0,get:function(){return parseRelativeUrl}});let h=f(109),g=f(5980);function parseRelativeUrl(l,d){let f=new URL((0,h.getLocationOrigin)()),y=d?new URL(d,f):l.startsWith(".")?new URL(window.location.href):f,{pathname:P,searchParams:b,search:E,hash:S,href:w,origin:R}=new URL(l,y);if(R!==f.origin)throw Error("invariant: invalid relative URL, router received "+l);return{pathname:P,query:(0,g.searchParamsToUrlQuery)(b),search:E,hash:S,href:w.slice(f.origin.length)}}},387:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"pathHasPrefix",{enumerable:!0,get:function(){return pathHasPrefix}});let h=f(1156);function pathHasPrefix(l,d){if("string"!=typeof l)return!1;let{pathname:f}=(0,h.parsePath)(l);return f===d||f.startsWith(d+"/")}},5980:function(l,d){"use strict";function searchParamsToUrlQuery(l){let d={};return l.forEach((l,f)=>{void 0===d[f]?d[f]=l:Array.isArray(d[f])?d[f].push(l):d[f]=[d[f],l]}),d}function stringifyUrlQueryParam(l){return"string"!=typeof l&&("number"!=typeof l||isNaN(l))&&"boolean"!=typeof l?"":String(l)}function urlQueryToSearchParams(l){let d=new URLSearchParams;return Object.entries(l).forEach(l=>{let[f,h]=l;Array.isArray(h)?h.forEach(l=>d.append(f,stringifyUrlQueryParam(l))):d.set(f,stringifyUrlQueryParam(h))}),d}function assign(l){for(var d=arguments.length,f=Array(d>1?d-1:0),h=1;h{Array.from(d.keys()).forEach(d=>l.delete(d)),d.forEach((d,f)=>l.append(f,d))}),l}Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{searchParamsToUrlQuery:function(){return searchParamsToUrlQuery},urlQueryToSearchParams:function(){return urlQueryToSearchParams},assign:function(){return assign}})},2531:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"removePathPrefix",{enumerable:!0,get:function(){return removePathPrefix}});let h=f(387);function removePathPrefix(l,d){if(!(0,h.pathHasPrefix)(l,d))return l;let f=l.slice(d.length);return f.startsWith("/")?f:"/"+f}},7425:function(l,d){"use strict";function removeTrailingSlash(l){return l.replace(/\/$/,"")||"/"}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"removeTrailingSlash",{enumerable:!0,get:function(){return removeTrailingSlash}})},2142:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"getRouteMatcher",{enumerable:!0,get:function(){return getRouteMatcher}});let h=f(109);function getRouteMatcher(l){let{re:d,groups:f}=l;return l=>{let g=d.exec(l);if(!g)return!1;let decode=l=>{try{return decodeURIComponent(l)}catch(l){throw new h.DecodeError("failed to decode param")}},y={};return Object.keys(f).forEach(l=>{let d=f[l],h=g[d.pos];void 0!==h&&(y[l]=~h.indexOf("/")?h.split("/").map(l=>decode(l)):d.repeat?[decode(h)]:decode(h))}),y}}},2839:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{getRouteRegex:function(){return getRouteRegex},getNamedRouteRegex:function(){return getNamedRouteRegex},getNamedMiddlewareRegex:function(){return getNamedMiddlewareRegex}});let h=f(2407),g=f(997),y=f(7425);function parseParameter(l){let d=l.startsWith("[")&&l.endsWith("]");d&&(l=l.slice(1,-1));let f=l.startsWith("...");return f&&(l=l.slice(3)),{key:l,repeat:f,optional:d}}function getParametrizedRoute(l){let d=(0,y.removeTrailingSlash)(l).slice(1).split("/"),f={},P=1;return{parameterizedRoute:d.map(l=>{let d=h.INTERCEPTION_ROUTE_MARKERS.find(d=>l.startsWith(d)),y=l.match(/\[((?:\[.*\])|.+)\]/);if(d&&y){let{key:l,optional:h,repeat:b}=parseParameter(y[1]);return f[l]={pos:P++,repeat:b,optional:h},"/"+(0,g.escapeStringRegexp)(d)+"([^/]+?)"}if(!y)return"/"+(0,g.escapeStringRegexp)(l);{let{key:l,repeat:d,optional:h}=parseParameter(y[1]);return f[l]={pos:P++,repeat:d,optional:h},d?h?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)"}}).join(""),groups:f}}function getRouteRegex(l){let{parameterizedRoute:d,groups:f}=getParametrizedRoute(l);return{re:RegExp("^"+d+"(?:/)?$"),groups:f}}function buildGetSafeRouteKey(){let l=0;return()=>{let d="",f=++l;for(;f>0;)d+=String.fromCharCode(97+(f-1)%26),f=Math.floor((f-1)/26);return d}}function getSafeKeyFromSegment(l){let{getSafeRouteKey:d,segment:f,routeKeys:h,keyPrefix:g}=l,{key:y,optional:P,repeat:b}=parseParameter(f),E=y.replace(/\W/g,"");g&&(E=""+g+E);let S=!1;return(0===E.length||E.length>30)&&(S=!0),isNaN(parseInt(E.slice(0,1)))||(S=!0),S&&(E=d()),g?h[E]=""+g+y:h[E]=""+y,b?P?"(?:/(?<"+E+">.+?))?":"/(?<"+E+">.+?)":"/(?<"+E+">[^/]+?)"}function getNamedParametrizedRoute(l,d){let f=(0,y.removeTrailingSlash)(l).slice(1).split("/"),P=buildGetSafeRouteKey(),b={};return{namedParameterizedRoute:f.map(l=>{let f=h.INTERCEPTION_ROUTE_MARKERS.some(d=>l.startsWith(d)),y=l.match(/\[((?:\[.*\])|.+)\]/);return f&&y?getSafeKeyFromSegment({getSafeRouteKey:P,segment:y[1],routeKeys:b,keyPrefix:d?"nxtI":void 0}):y?getSafeKeyFromSegment({getSafeRouteKey:P,segment:y[1],routeKeys:b,keyPrefix:d?"nxtP":void 0}):"/"+(0,g.escapeStringRegexp)(l)}).join(""),routeKeys:b}}function getNamedRouteRegex(l,d){let f=getNamedParametrizedRoute(l,d);return{...getRouteRegex(l),namedRegex:"^"+f.namedParameterizedRoute+"(?:/)?$",routeKeys:f.routeKeys}}function getNamedMiddlewareRegex(l,d){let{parameterizedRoute:f}=getParametrizedRoute(l),{catchAll:h=!0}=d;if("/"===f)return{namedRegex:"^/"+(h?".*":"")+"$"};let{namedParameterizedRoute:g}=getNamedParametrizedRoute(l,!1);return{namedRegex:"^"+g+(h?"(?:(/.*)?)":"")+"$"}}},2677:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"getSortedRoutes",{enumerable:!0,get:function(){return getSortedRoutes}});let UrlNode=class UrlNode{insert(l){this._insert(l.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(l){void 0===l&&(l="/");let d=[...this.children.keys()].sort();null!==this.slugName&&d.splice(d.indexOf("[]"),1),null!==this.restSlugName&&d.splice(d.indexOf("[...]"),1),null!==this.optionalRestSlugName&&d.splice(d.indexOf("[[...]]"),1);let f=d.map(d=>this.children.get(d)._smoosh(""+l+d+"/")).reduce((l,d)=>[...l,...d],[]);if(null!==this.slugName&&f.push(...this.children.get("[]")._smoosh(l+"["+this.slugName+"]/")),!this.placeholder){let d="/"===l?"/":l.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+d+'" and "'+d+"[[..."+this.optionalRestSlugName+']]").');f.unshift(d)}return null!==this.restSlugName&&f.push(...this.children.get("[...]")._smoosh(l+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&f.push(...this.children.get("[[...]]")._smoosh(l+"[[..."+this.optionalRestSlugName+"]]/")),f}_insert(l,d,f){if(0===l.length){this.placeholder=!1;return}if(f)throw Error("Catch-all must be the last part of the URL.");let h=l[0];if(h.startsWith("[")&&h.endsWith("]")){let g=h.slice(1,-1),y=!1;if(g.startsWith("[")&&g.endsWith("]")&&(g=g.slice(1,-1),y=!0),g.startsWith("...")&&(g=g.substring(3),f=!0),g.startsWith("[")||g.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+g+"').");if(g.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+g+"').");function handleSlug(l,f){if(null!==l&&l!==f)throw Error("You cannot use different slug names for the same dynamic path ('"+l+"' !== '"+f+"').");d.forEach(l=>{if(l===f)throw Error('You cannot have the same slug name "'+f+'" repeat within a single dynamic path');if(l.replace(/\W/g,"")===h.replace(/\W/g,""))throw Error('You cannot have the slug names "'+l+'" and "'+f+'" differ only by non-word symbols within a single dynamic path')}),d.push(f)}if(f){if(y){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+l[0]+'" ).');handleSlug(this.optionalRestSlugName,g),this.optionalRestSlugName=g,h="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+l[0]+'").');handleSlug(this.restSlugName,g),this.restSlugName=g,h="[...]"}}else{if(y)throw Error('Optional route parameters are not yet supported ("'+l[0]+'").');handleSlug(this.slugName,g),this.slugName=g,h="[]"}}this.children.has(h)||this.children.set(h,new UrlNode),this.children.get(h)._insert(l.slice(1),d,f)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}};function getSortedRoutes(l){let d=new UrlNode;return l.forEach(l=>d.insert(l)),d.smoosh()}},5612:function(l,d){"use strict";let f;Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{default:function(){return _default},setConfig:function(){return setConfig}});let _default=()=>f;function setConfig(l){f=l}},6163:function(l,d){"use strict";function isGroupSegment(l){return"("===l[0]&&l.endsWith(")")}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isGroupSegment",{enumerable:!0,get:function(){return isGroupSegment}})},8955:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"default",{enumerable:!0,get:function(){return SideEffect}});let h=f(7294),g=h.useLayoutEffect,y=h.useEffect;function SideEffect(l){let{headManager:d,reduceComponentsToState:f}=l;function emitChange(){if(d&&d.mountedInstances){let g=h.Children.toArray(Array.from(d.mountedInstances).filter(Boolean));d.updateHead(f(g,l))}}return g(()=>{var f;return null==d||null==(f=d.mountedInstances)||f.add(l.children),()=>{var f;null==d||null==(f=d.mountedInstances)||f.delete(l.children)}}),g(()=>(d&&(d._pendingUpdate=emitChange),()=>{d&&(d._pendingUpdate=emitChange)})),y(()=>(d&&d._pendingUpdate&&(d._pendingUpdate(),d._pendingUpdate=null),()=>{d&&d._pendingUpdate&&(d._pendingUpdate(),d._pendingUpdate=null)})),null}},109:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{WEB_VITALS:function(){return f},execOnce:function(){return execOnce},isAbsoluteUrl:function(){return isAbsoluteUrl},getLocationOrigin:function(){return getLocationOrigin},getURL:function(){return getURL},getDisplayName:function(){return getDisplayName},isResSent:function(){return isResSent},normalizeRepeatedSlashes:function(){return normalizeRepeatedSlashes},loadGetInitialProps:function(){return loadGetInitialProps},SP:function(){return g},ST:function(){return y},DecodeError:function(){return DecodeError},NormalizeError:function(){return NormalizeError},PageNotFoundError:function(){return PageNotFoundError},MissingStaticPage:function(){return MissingStaticPage},MiddlewareNotFoundError:function(){return MiddlewareNotFoundError},stringifyError:function(){return stringifyError}});let f=["CLS","FCP","FID","INP","LCP","TTFB"];function execOnce(l){let d,f=!1;return function(){for(var h=arguments.length,g=Array(h),y=0;yh.test(l);function getLocationOrigin(){let{protocol:l,hostname:d,port:f}=window.location;return l+"//"+d+(f?":"+f:"")}function getURL(){let{href:l}=window.location,d=getLocationOrigin();return l.substring(d.length)}function getDisplayName(l){return"string"==typeof l?l:l.displayName||l.name||"Unknown"}function isResSent(l){return l.finished||l.headersSent}function normalizeRepeatedSlashes(l){let d=l.split("?"),f=d[0];return f.replace(/\\/g,"/").replace(/\/\/+/g,"/")+(d[1]?"?"+d.slice(1).join("?"):"")}async function loadGetInitialProps(l,d){let f=d.res||d.ctx&&d.ctx.res;if(!l.getInitialProps)return d.ctx&&d.Component?{pageProps:await loadGetInitialProps(d.Component,d.ctx)}:{};let h=await l.getInitialProps(d);if(f&&isResSent(f))return h;if(!h){let d='"'+getDisplayName(l)+'.getInitialProps()" should resolve to an object. But found "'+h+'" instead.';throw Error(d)}return h}let g="undefined"!=typeof performance,y=g&&["mark","measure","getEntriesByName"].every(l=>"function"==typeof performance[l]);let DecodeError=class DecodeError extends Error{};let NormalizeError=class NormalizeError extends Error{};let PageNotFoundError=class PageNotFoundError extends Error{constructor(l){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+l}};let MissingStaticPage=class MissingStaticPage extends Error{constructor(l,d){super(),this.message="Failed to load static file for page: "+l+" "+d}};let MiddlewareNotFoundError=class MiddlewareNotFoundError extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}};function stringifyError(l){return JSON.stringify({message:l.message,stack:l.stack})}},1905:function(l,d){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"warnOnce",{enumerable:!0,get:function(){return warnOnce}});let warnOnce=l=>{}},8018:function(l){var d,f,h,g,y,P,b,E,S,w,R,O,j,A,M,C,I,L,x,N,D,k,F,U,H,B,W,q,z,G,V,X,K,Y,Q,$,J,Z,ee,et,er,en,ea,eo,ei,el;(d={}).d=function(l,f){for(var h in f)d.o(f,h)&&!d.o(l,h)&&Object.defineProperty(l,h,{enumerable:!0,get:f[h]})},d.o=function(l,d){return Object.prototype.hasOwnProperty.call(l,d)},d.r=function(l){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(l,"__esModule",{value:!0})},void 0!==d&&(d.ab="//"),f={},d.r(f),d.d(f,{getCLS:function(){return F},getFCP:function(){return N},getFID:function(){return G},getINP:function(){return en},getLCP:function(){return eo},getTTFB:function(){return el},onCLS:function(){return F},onFCP:function(){return N},onFID:function(){return G},onINP:function(){return en},onLCP:function(){return eo},onTTFB:function(){return el}}),E=-1,S=function(l){addEventListener("pageshow",function(d){d.persisted&&(E=d.timeStamp,l(d))},!0)},w=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]},R=function(){var l=w();return l&&l.activationStart||0},O=function(l,d){var f=w(),h="navigate";return E>=0?h="back-forward-cache":f&&(h=document.prerendering||R()>0?"prerender":f.type.replace(/_/g,"-")),{name:l,value:void 0===d?-1:d,rating:"good",delta:0,entries:[],id:"v3-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:h}},j=function(l,d,f){try{if(PerformanceObserver.supportedEntryTypes.includes(l)){var h=new PerformanceObserver(function(l){d(l.getEntries())});return h.observe(Object.assign({type:l,buffered:!0},f||{})),h}}catch(l){}},A=function(l,d){var T=function t(f){"pagehide"!==f.type&&"hidden"!==document.visibilityState||(l(f),d&&(removeEventListener("visibilitychange",t,!0),removeEventListener("pagehide",t,!0)))};addEventListener("visibilitychange",T,!0),addEventListener("pagehide",T,!0)},M=function(l,d,f,h){var g,y;return function(P){var b;d.value>=0&&(P||h)&&((y=d.value-(g||0))||void 0===g)&&(g=d.value,d.delta=y,d.rating=(b=d.value)>f[1]?"poor":b>f[0]?"needs-improvement":"good",l(d))}},C=-1,I=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},L=function(){A(function(l){C=l.timeStamp},!0)},x=function(){return C<0&&(C=I(),L(),S(function(){setTimeout(function(){C=I(),L()},0)})),{get firstHiddenTime(){return C}}},N=function(l,d){d=d||{};var f,h=[1800,3e3],g=x(),y=O("FCP"),c=function(l){l.forEach(function(l){"first-contentful-paint"===l.name&&(b&&b.disconnect(),l.startTime-1&&l(d)},g=O("CLS",0),y=0,P=[],p=function(l){l.forEach(function(l){if(!l.hadRecentInput){var d=P[0],f=P[P.length-1];y&&l.startTime-f.startTime<1e3&&l.startTime-d.startTime<5e3?(y+=l.value,P.push(l)):(y=l.value,P=[l]),y>g.value&&(g.value=y,g.entries=P,h())}})},b=j("layout-shift",p);b&&(h=M(i,g,f,d.reportAllChanges),A(function(){p(b.takeRecords()),h(!0)}),S(function(){y=0,k=-1,h=M(i,g=O("CLS",0),f,d.reportAllChanges)}))},U={passive:!0,capture:!0},H=new Date,B=function(l,d){h||(h=d,g=l,y=new Date,z(removeEventListener),W())},W=function(){if(g>=0&&g1e12?new Date:performance.now())-l.timeStamp;"pointerdown"==l.type?(d=function(){B(g,l),h()},f=function(){h()},h=function(){removeEventListener("pointerup",d,U),removeEventListener("pointercancel",f,U)},addEventListener("pointerup",d,U),addEventListener("pointercancel",f,U)):B(g,l)}},z=function(l){["mousedown","keydown","touchstart","pointerdown"].forEach(function(d){return l(d,q,U)})},G=function(l,d){d=d||{};var f,y=[100,300],b=x(),E=O("FID"),v=function(l){l.startTimed.latency){if(f)f.entries.push(l),f.latency=Math.max(f.latency,l.duration);else{var h={id:l.interactionId,latency:l.duration,entries:[l]};et[h.id]=h,ee.push(h)}ee.sort(function(l,d){return d.latency-l.latency}),ee.splice(10).forEach(function(l){delete et[l.id]})}},en=function(l,d){d=d||{};var f=[200,500];$();var h,g=O("INP"),a=function(l){l.forEach(function(l){l.interactionId&&er(l),"first-input"!==l.entryType||ee.some(function(d){return d.entries.some(function(d){return l.duration===d.duration&&l.startTime===d.startTime})})||er(l)});var d,f=(d=Math.min(ee.length-1,Math.floor(Z()/50)),ee[d]);f&&f.latency!==g.value&&(g.value=f.latency,g.entries=f.entries,h())},y=j("event",a,{durationThreshold:d.durationThreshold||40});h=M(l,g,f,d.reportAllChanges),y&&(y.observe({type:"first-input",buffered:!0}),A(function(){a(y.takeRecords()),g.value<0&&Z()>0&&(g.value=0,g.entries=[]),h(!0)}),S(function(){ee=[],J=Q(),h=M(l,g=O("INP"),f,d.reportAllChanges)}))},ea={},eo=function(l,d){d=d||{};var f,h=[2500,4e3],g=x(),y=O("LCP"),c=function(l){var d=l[l.length-1];if(d){var h=d.startTime-R();hperformance.now())return;h.entries=[y],g(!0),S(function(){(g=M(l,h=O("TTFB",0),f,d.reportAllChanges))(!0)})}})},l.exports=f},9423:function(l,d){"use strict";function isAPIRoute(l){return"/api"===l||!!(null==l?void 0:l.startsWith("/api/"))}Object.defineProperty(d,"__esModule",{value:!0}),Object.defineProperty(d,"isAPIRoute",{enumerable:!0,get:function(){return isAPIRoute}})},676:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{default:function(){return isError},getProperError:function(){return getProperError}});let h=f(5585);function isError(l){return"object"==typeof l&&null!==l&&"name"in l&&"message"in l}function getProperError(l){return isError(l)?l:Error((0,h.isPlainObject)(l)?JSON.stringify(l):l+"")}},2407:function(l,d,f){"use strict";Object.defineProperty(d,"__esModule",{value:!0}),function(l,d){for(var f in d)Object.defineProperty(l,f,{enumerable:!0,get:d[f]})}(d,{INTERCEPTION_ROUTE_MARKERS:function(){return g},isInterceptionRouteAppPath:function(){return isInterceptionRouteAppPath},extractInterceptionRouteInformation:function(){return extractInterceptionRouteInformation}});let h=f(3090),g=["(..)(..)","(.)","(..)","(...)"];function isInterceptionRouteAppPath(l){return void 0!==l.split("/").find(l=>g.find(d=>l.startsWith(d)))}function extractInterceptionRouteInformation(l){let d,f,y;for(let h of l.split("/"))if(f=g.find(l=>h.startsWith(l))){[d,y]=l.split(f,2);break}if(!d||!f||!y)throw Error(`Invalid interception route: ${l}. Must be in the format //(..|...|..)(..)/`);switch(d=(0,h.normalizeAppPath)(d),f){case"(.)":y="/"===d?`/${y}`:d+"/"+y;break;case"(..)":if("/"===d)throw Error(`Invalid interception route: ${l}. Cannot use (..) marker at the root level, use (.) instead.`);y=d.split("/").slice(0,-1).concat(y).join("/");break;case"(...)":y="/"+y;break;case"(..)(..)":let P=d.split("/");if(P.length<=2)throw Error(`Invalid interception route: ${l}. Cannot use (..)(..) marker at the root level or one level up.`);y=P.slice(0,-2).concat(y).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:d,interceptedRoute:y}}},2431:function(){},8754:function(l,d,f){"use strict";function _interop_require_default(l){return l&&l.__esModule?l:{default:l}}f.r(d),f.d(d,{_:function(){return _interop_require_default},_interop_require_default:function(){return _interop_require_default}})},1757:function(l,d,f){"use strict";function _getRequireWildcardCache(l){if("function"!=typeof WeakMap)return null;var d=new WeakMap,f=new WeakMap;return(_getRequireWildcardCache=function(l){return l?f:d})(l)}function _interop_require_wildcard(l,d){if(!d&&l&&l.__esModule)return l;if(null===l||"object"!=typeof l&&"function"!=typeof l)return{default:l};var f=_getRequireWildcardCache(d);if(f&&f.has(l))return f.get(l);var h={},g=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var y in l)if("default"!==y&&Object.prototype.hasOwnProperty.call(l,y)){var P=g?Object.getOwnPropertyDescriptor(l,y):null;P&&(P.get||P.set)?Object.defineProperty(h,y,P):h[y]=l[y]}return h.default=l,f&&f.set(l,h),h}f.r(d),f.d(d,{_:function(){return _interop_require_wildcard},_interop_require_wildcard:function(){return _interop_require_wildcard}})}},function(l){var __webpack_exec__=function(d){return l(l.s=d)};l.O(0,[774],function(){return __webpack_exec__(3143),__webpack_exec__(6003)}),_N_E=l.O()}]);(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{6840:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return t(5913)}])},5913:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return MyApp}});var i=t(5893),c=t(9008),s=t.n(c);function MyApp(e){let{Component:n,pageProps:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(s(),{children:[(0,i.jsx)("meta",{charSet:"utf-8"}),(0,i.jsx)("meta",{httpEquiv:"X-UA-Compatible",content:"IE=edge"}),(0,i.jsx)("meta",{name:"viewport",content:"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"}),(0,i.jsx)("meta",{name:"description",content:"Description"}),(0,i.jsx)("meta",{name:"keywords",content:"Keywords"}),(0,i.jsx)("title",{children:"Laconic Test PWA"}),(0,i.jsx)("link",{rel:"manifest",href:"/manifest.json"}),(0,i.jsx)("link",{href:"/icons/favicon-16x16.png",rel:"icon",type:"image/png",sizes:"16x16"}),(0,i.jsx)("link",{href:"/icons/favicon-32x32.png",rel:"icon",type:"image/png",sizes:"32x32"}),(0,i.jsx)("link",{rel:"apple-touch-icon",href:"/apple-icon.png"}),(0,i.jsx)("meta",{name:"theme-color",content:"#317EFB"})]}),(0,i.jsx)(n,{...t})]})}t(415)},415:function(){},9008:function(e,n,t){e.exports=t(9201)}},function(e){var __webpack_exec__=function(n){return e(e.s=n)};e.O(0,[774,179],function(){return __webpack_exec__(6840),__webpack_exec__(9974)}),_N_E=e.O()}]);(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{8312:function(e,c,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return n(2627)}])},2627:function(e,c,n){"use strict";n.r(c),n.d(c,{default:function(){return Home}});var _=n(5893),s=n(6612),o=n.n(s);function Home(){return(0,_.jsxs)("div",{className:o().container,children:[(0,_.jsxs)("main",{className:o().main,children:[(0,_.jsxs)("h1",{className:o().title,children:["Welcome to ",(0,_.jsx)("a",{href:"https://www.laconic.com/",children:"Laconic!"})]}),(0,_.jsxs)("div",{className:o().grid,children:[(0,_.jsxs)("p",{className:o().card,children:["CONFIG1 has value: ","this string"]}),(0,_.jsxs)("p",{className:o().card,children:["CONFIG2 has value: ","this different string"]}),(0,_.jsxs)("p",{className:o().card,children:["WEBAPP_DEBUG has value: ","44ec6317-c911-47ff-86c1-d36c42ae9383"]})]})]}),(0,_.jsx)("footer",{className:o().footer,children:(0,_.jsxs)("a",{href:"https://www.laconic.com/",target:"_blank",rel:"noopener noreferrer",children:["Powered by \xa0",(0,_.jsxs)("svg",{width:"133",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,_.jsx)("path",{d:"M37.761 22.302h9.246v-2.704h-6.155v-17.9h-3.09v20.604ZM59.314 1.697h-5.126l-5.357 20.605h3.194l1.34-5.151h6.618l1.34 5.151h3.348L59.314 1.697Zm-5.306 12.878 2.679-10.663h.103l2.575 10.663h-5.357ZM74.337 9.682h3.606c0-5.873-1.88-8.397-6.259-8.397-4.61 0-6.593 3.194-6.593 10.689 0 7.52 1.983 10.74 6.593 10.74 4.379 0 6.259-2.447 6.285-8.139h-3.606c-.026 4.456-.567 5.563-2.679 5.563-2.42 0-3.013-1.622-2.987-8.164 0-6.516.592-8.14 2.987-8.113 2.112 0 2.653 1.159 2.653 5.82ZM86.689 1.285c4.687.026 6.696 3.245 6.696 10.715 0 7.469-2.009 10.688-6.696 10.714-4.714.026-6.723-3.194-6.723-10.714 0-7.521 2.01-10.74 6.723-10.715ZM83.572 12c0 6.516.618 8.139 3.117 8.139 2.472 0 3.09-1.623 3.09-8.14 0-6.541-.618-8.164-3.09-8.138-2.499.026-3.117 1.648-3.117 8.139ZM99.317 22.276l-3.09.026V1.697h5.434l5.074 16.793h.052V1.697h3.09v20.605h-5.099l-5.409-18.08h-.052v18.054ZM116.615 1.697h-3.091v20.605h3.091V1.697ZM128.652 9.682h3.606c0-5.873-1.881-8.397-6.259-8.397-4.61 0-6.594 3.194-6.594 10.689 0 7.52 1.984 10.74 6.594 10.74 4.378 0 6.259-2.447 6.284-8.139h-3.605c-.026 4.456-.567 5.563-2.679 5.563-2.421 0-3.014-1.622-2.988-8.164 0-6.516.593-8.14 2.988-8.113 2.112 0 2.653 1.159 2.653 5.82Z",fill:"#000000"}),(0,_.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.05 12.623A15.378 15.378 0 0 0 8.57 1.714C8.573 1.136 8.54.564 8.477 0H0v16.287c0 1.974.752 3.949 2.258 5.454A7.69 7.69 0 0 0 7.714 24L24 24v-8.477a15.636 15.636 0 0 0-1.715-.095c-4.258 0-8.115 1.73-10.908 4.523-2.032 1.981-5.291 1.982-7.299-.026-2.006-2.006-2.007-5.266-.029-7.302Zm18.192-10.86a6.004 6.004 0 0 0-8.485 0 6.003 6.003 0 0 0 0 8.484 6.003 6.003 0 0 0 8.485 0 6.002 6.002 0 0 0 0-8.485Z",fill:"#000000"})]})]})})]})}},6612:function(e){e.exports={container:"Home_container__d256j",main:"Home_main__VkIEL",footer:"Home_footer__yFiaX",title:"Home_title__hYX6j",description:"Home_description__uXNdx",code:"Home_code__VVrIr",grid:"Home_grid__AVljO",card:"Home_card__E5spL",logo:"Home_logo__IOQAX"}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=8312)}),_N_E=e.O()}]);self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/css/3571059724d711eb.css","static/chunks/pages/index-08151452ae5af5e0.js"],"/_error":["static/chunks/pages/_error-ee5b5fb91d29d86f.js"],sortedPages:["/","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); \ No newline at end of file