[feat] add working static frontend
Browse filesThis view is limited to 50 files because it contains too many changes.  
							See raw diff
- .dockerignore +7 -0
 - Dockerfile +9 -6
 - README.md +3 -3
 - dockerfiles/dockerfile-lambda-fastsam-api +3 -3
 - dockerfiles/dockerfile-samgis-base +55 -19
 - static/.gitignore +38 -0
 - static/.prettierrc.json +8 -0
 - static/LICENSE +176 -0
 - static/NOTICE +0 -0
 - static/README.md +36 -0
 - static/app.js +0 -35
 - static/env.d.ts +1 -0
 - static/index.html +14 -40
 - static/package.json +35 -0
 - static/pnpm-lock.yaml +2063 -0
 - static/postcss.config.js +7 -0
 - static/public/api-docs.svg +3 -0
 - static/public/apple-touch-icon.png +0 -0
 - static/public/blog.svg +98 -0
 - static/public/favicon.ico +0 -0
 - static/public/home-page.svg +3 -0
 - static/public/icon-192.png +0 -0
 - static/public/icon.svg +0 -0
 - static/public/loader.svg +1 -0
 - static/public/login.svg +6 -0
 - static/public/logout.svg +3 -0
 - static/public/manifest.webmanifest +6 -0
 - static/public/marker-icon-exclude-2x.png +0 -0
 - static/public/marker-icon-exclude.png +0 -0
 - static/public/marker-icon-include-2x.png +0 -0
 - static/public/marker-icon-include.png +0 -0
 - static/public/marker-shadow.png +0 -0
 - static/public/prediction-map-bw.svg +0 -0
 - static/public/user-profile.svg +60 -0
 - static/src/App.vue +28 -0
 - static/src/components/PageFooter.vue +16 -0
 - static/src/components/PageFooterHyperlink.vue +16 -0
 - static/src/components/PageLayout.vue +28 -0
 - static/src/components/PagePredictionMap.vue +224 -0
 - static/src/components/StatsGrid.vue +17 -0
 - static/src/components/TableGenericComponent.vue +30 -0
 - static/src/components/buttons/ButtonComponent.vue +11 -0
 - static/src/components/buttons/ButtonMapSendRequest.vue +31 -0
 - static/src/components/constants.ts +236 -0
 - static/src/components/helpers.ts +253 -0
 - static/src/components/types.d.ts +50 -0
 - static/src/input.css +20 -0
 - static/src/leaflet-custom.css +42 -0
 - static/src/main.ts +6 -0
 - static/tailwind.config.js +46 -0
 
    	
        .dockerignore
    CHANGED
    
    | 
         @@ -7,3 +7,10 @@ tmp/ 
     | 
|
| 7 | 
         
             
            __pycache__
         
     | 
| 8 | 
         
             
            .DS_Store
         
     | 
| 9 | 
         
             
            .pytest_cache
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 7 | 
         
             
            __pycache__
         
     | 
| 8 | 
         
             
            .DS_Store
         
     | 
| 9 | 
         
             
            .pytest_cache
         
     | 
| 10 | 
         
            +
            node_modules
         
     | 
| 11 | 
         
            +
            dist
         
     | 
| 12 | 
         
            +
            static/node_modules
         
     | 
| 13 | 
         
            +
            static/dist
         
     | 
| 14 | 
         
            +
            static/.env*
         
     | 
| 15 | 
         
            +
            .coverage
         
     | 
| 16 | 
         
            +
            .git
         
     | 
    	
        Dockerfile
    CHANGED
    
    | 
         @@ -8,10 +8,11 @@ ENV VIRTUAL_ENV=${LAMBDA_TASK_ROOT}/.venv \ 
     | 
|
| 8 | 
         | 
| 9 | 
         
             
            # Set working directory to function root directory
         
     | 
| 10 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 11 | 
         
            -
             
     | 
| 12 | 
         
            -
             
     | 
| 13 | 
         
            -
            COPY  
     | 
| 14 | 
         
            -
            COPY  
     | 
| 
         | 
|
| 15 | 
         | 
| 16 | 
         
             
            RUN ls -l /usr/bin/which
         
     | 
| 17 | 
         
             
            RUN /usr/bin/which python
         
     | 
| 
         @@ -32,7 +33,9 @@ RUN python -c "import rasterio" 
     | 
|
| 32 | 
         
             
            RUN python -c "import uvicorn"
         
     | 
| 33 | 
         
             
            RUN df -h
         
     | 
| 34 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/samgis/
         
     | 
| 35 | 
         
            -
            RUN ls -l ${LAMBDA_TASK_ROOT}/ 
     | 
| 36 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/static/
         
     | 
| 
         | 
|
| 
         | 
|
| 37 | 
         | 
| 38 | 
         
            -
            CMD ["uvicorn", " 
     | 
| 
         | 
|
| 8 | 
         | 
| 9 | 
         
             
            # Set working directory to function root directory
         
     | 
| 10 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            # don't copy here the "static" folder, is already present because of dist and node_modules folders
         
     | 
| 13 | 
         
            +
            COPY machine_learning_models ${LAMBDA_TASK_ROOT}/machine_learning_models
         
     | 
| 14 | 
         
            +
            COPY samgis ${LAMBDA_TASK_ROOT}/samgis
         
     | 
| 15 | 
         
            +
            COPY wrappers ${LAMBDA_TASK_ROOT}/wrappers
         
     | 
| 16 | 
         | 
| 17 | 
         
             
            RUN ls -l /usr/bin/which
         
     | 
| 18 | 
         
             
            RUN /usr/bin/which python
         
     | 
| 
         | 
|
| 33 | 
         
             
            RUN python -c "import uvicorn"
         
     | 
| 34 | 
         
             
            RUN df -h
         
     | 
| 35 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/samgis/
         
     | 
| 36 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}/wrappers/
         
     | 
| 37 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/static/
         
     | 
| 38 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}/static/dist
         
     | 
| 39 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}/static/node_modules
         
     | 
| 40 | 
         | 
| 41 | 
         
            +
            CMD ["uvicorn", "wrappers.fastapi_wrapper:app", "--host", "0.0.0.0", "--port", "7860"]
         
     | 
    	
        README.md
    CHANGED
    
    | 
         @@ -19,13 +19,13 @@ docker stop $(docker ps -a -q); docker rm $(docker ps -a -q) 
     | 
|
| 19 | 
         
             
            docker build . -f dockerfiles/dockerfile-samgis-base --build-arg DEPENDENCY_GROUP=fastapi --tag localhost/samgis-base-fastapi --progress=plain
         
     | 
| 20 | 
         | 
| 21 | 
         
             
            # build the image, use the tag "samgis-huggingface"
         
     | 
| 22 | 
         
            -
            docker build . --tag samgis-huggingface --progress=plain
         
     | 
| 23 | 
         
             
            ```
         
     | 
| 24 | 
         | 
| 25 | 
         
             
            Run the container (keep it on background) and show logs
         
     | 
| 26 | 
         | 
| 27 | 
         
             
            ```bash
         
     | 
| 28 | 
         
            -
            docker run  -d --name samgis-huggingface -p 7860:7860 samgis-huggingface; docker logs -f samgis-huggingface
         
     | 
| 29 | 
         
             
            ```
         
     | 
| 30 | 
         | 
| 31 | 
         
             
            Test it with curl:
         
     | 
| 
         @@ -58,7 +58,7 @@ docker build . -f dockerfiles/dockerfile-lambda-fastsam-api --tag localhost/lamb 
     | 
|
| 58 | 
         
             
            Run the container (keep it on background) and show logs
         
     | 
| 59 | 
         | 
| 60 | 
         
             
            ```bash
         
     | 
| 61 | 
         
            -
            docker  
     | 
| 62 | 
         
             
            ```
         
     | 
| 63 | 
         | 
| 64 | 
         
             
            Test it with curl:
         
     | 
| 
         | 
|
| 19 | 
         
             
            docker build . -f dockerfiles/dockerfile-samgis-base --build-arg DEPENDENCY_GROUP=fastapi --tag localhost/samgis-base-fastapi --progress=plain
         
     | 
| 20 | 
         | 
| 21 | 
         
             
            # build the image, use the tag "samgis-huggingface"
         
     | 
| 22 | 
         
            +
            docker build . --tag localhost/samgis-huggingface --progress=plain
         
     | 
| 23 | 
         
             
            ```
         
     | 
| 24 | 
         | 
| 25 | 
         
             
            Run the container (keep it on background) and show logs
         
     | 
| 26 | 
         | 
| 27 | 
         
             
            ```bash
         
     | 
| 28 | 
         
            +
            docker run  -d --name samgis-huggingface -p 7860:7860 localhost/samgis-huggingface; docker logs -f samgis-huggingface
         
     | 
| 29 | 
         
             
            ```
         
     | 
| 30 | 
         | 
| 31 | 
         
             
            Test it with curl:
         
     | 
| 
         | 
|
| 58 | 
         
             
            Run the container (keep it on background) and show logs
         
     | 
| 59 | 
         | 
| 60 | 
         
             
            ```bash
         
     | 
| 61 | 
         
            +
            docker run  -d --name lambda-fastsam-api -p 8080:8080 lambda-fastsam-api; docker logs -f lambda-fastsam-api
         
     | 
| 62 | 
         
             
            ```
         
     | 
| 63 | 
         | 
| 64 | 
         
             
            Test it with curl:
         
     | 
    	
        dockerfiles/dockerfile-lambda-fastsam-api
    CHANGED
    
    | 
         @@ -9,7 +9,7 @@ ENV VIRTUAL_ENV=${LAMBDA_TASK_ROOT}/.venv \ 
     | 
|
| 9 | 
         
             
            # Set working directory to function root directory
         
     | 
| 10 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 11 | 
         
             
            COPY ./samgis ${LAMBDA_TASK_ROOT}/samgis
         
     | 
| 12 | 
         
            -
            COPY ./ 
     | 
| 13 | 
         
             
            COPY ./machine_learning_models ${LAMBDA_TASK_ROOT}/machine_learning_models
         
     | 
| 14 | 
         | 
| 15 | 
         
             
            RUN ls -l /usr/bin/which
         
     | 
| 
         @@ -30,7 +30,7 @@ RUN python -c "import rasterio" 
     | 
|
| 30 | 
         
             
            RUN df -h
         
     | 
| 31 | 
         
             
            RUN ls -l /lambda-entrypoint.sh
         
     | 
| 32 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/samgis/
         
     | 
| 33 | 
         
            -
            RUN ls -l ${LAMBDA_TASK_ROOT}/ 
     | 
| 34 | 
         | 
| 35 | 
         
             
            ENTRYPOINT  ["/lambda-entrypoint.sh"]
         
     | 
| 36 | 
         
            -
            CMD [ " 
     | 
| 
         | 
|
| 9 | 
         
             
            # Set working directory to function root directory
         
     | 
| 10 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 11 | 
         
             
            COPY ./samgis ${LAMBDA_TASK_ROOT}/samgis
         
     | 
| 12 | 
         
            +
            COPY ./wrappers ${LAMBDA_TASK_ROOT}/wrappers
         
     | 
| 13 | 
         
             
            COPY ./machine_learning_models ${LAMBDA_TASK_ROOT}/machine_learning_models
         
     | 
| 14 | 
         | 
| 15 | 
         
             
            RUN ls -l /usr/bin/which
         
     | 
| 
         | 
|
| 30 | 
         
             
            RUN df -h
         
     | 
| 31 | 
         
             
            RUN ls -l /lambda-entrypoint.sh
         
     | 
| 32 | 
         
             
            RUN ls -l ${LAMBDA_TASK_ROOT}/samgis/
         
     | 
| 33 | 
         
            +
            RUN ls -l ${LAMBDA_TASK_ROOT}/wrappers/
         
     | 
| 34 | 
         | 
| 35 | 
         
             
            ENTRYPOINT  ["/lambda-entrypoint.sh"]
         
     | 
| 36 | 
         
            +
            CMD [ "wrappers.lambda_wrapper.lambda_handler" ]
         
     | 
    	
        dockerfiles/dockerfile-samgis-base
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 1 | 
         
            -
            # Include global  
     | 
| 2 | 
         
             
            ARG ARCH="x86_64"
         
     | 
| 3 | 
         
             
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 
         | 
|
| 4 | 
         
             
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 5 | 
         
             
            ARG POETRY_NO_INTERACTION=1
         
     | 
| 6 | 
         
             
            ARG POETRY_VIRTUALENVS_IN_PROJECT=1
         
     | 
| 
         @@ -9,7 +10,7 @@ ARG POETRY_CACHE_DIR=/tmp/poetry_cache 
     | 
|
| 9 | 
         
             
            ARG RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie"
         
     | 
| 10 | 
         | 
| 11 | 
         | 
| 12 | 
         
            -
            FROM python:3.11-bookworm as  
     | 
| 13 | 
         | 
| 14 | 
         
             
            ARG ARCH
         
     | 
| 15 | 
         
             
            ARG LAMBDA_TASK_ROOT
         
     | 
| 
         @@ -28,18 +29,16 @@ RUN echo "ARG POETRY_CACHE_DIR: ${POETRY_CACHE_DIR} ..." 
     | 
|
| 28 | 
         
             
            RUN echo "ARG PYTHONPATH: $PYTHONPATH ..."
         
     | 
| 29 | 
         
             
            RUN test -n ${DEPENDENCY_GROUP:?}
         
     | 
| 30 | 
         
             
            RUN echo "python DEPENDENCY_GROUP: ${DEPENDENCY_GROUP} ..."
         
     | 
| 
         | 
|
| 31 | 
         | 
| 32 | 
         
             
            # Set working directory to function root directory
         
     | 
| 33 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 34 | 
         
             
            COPY requirements_poetry.txt pyproject.toml poetry.lock README.md ${LAMBDA_TASK_ROOT}/
         
     | 
| 35 | 
         | 
| 36 | 
         
             
            # avoid segment-geospatial exception caused by missing libGL.so.1 library
         
     | 
| 37 | 
         
            -
            RUN apt update && apt install -y libgl1 curl python3-pip && apt clean
         
     | 
| 38 | 
         
            -
            RUN  
     | 
| 39 | 
         
            -
            RUN  
     | 
| 40 | 
         
            -
            RUN ls -ld /usr/lib/${ARCH}-linux-gnu/libGL.so* || echo "libGL.so* not found/2..."
         
     | 
| 41 | 
         
            -
            RUN which python
         
     | 
| 42 | 
         
            -
            RUN python --version
         
     | 
| 43 | 
         | 
| 44 | 
         
             
            # poetry installation path is NOT within ${LAMBDA_TASK_ROOT}: not needed for runtime docker image
         
     | 
| 45 | 
         
             
            RUN python -m pip install -r ${LAMBDA_TASK_ROOT}/requirements_poetry.txt
         
     | 
| 
         @@ -51,11 +50,6 @@ RUN poetry install --with ${DEPENDENCY_GROUP} --no-root 
     | 
|
| 51 | 
         | 
| 52 | 
         
             
            RUN curl -Lo /usr/local/bin/aws-lambda-rie ${RIE}
         
     | 
| 53 | 
         | 
| 54 | 
         
            -
            RUN echo "check for libGL.so"
         
     | 
| 55 | 
         
            -
            RUN ls -ld /usr/lib/*-linux-gnu/libGL.so* || echo "libGL.so* not found..."
         
     | 
| 56 | 
         
            -
            RUN ls -ld ${LAMBDA_TASK_ROOT}/.venv
         
     | 
| 57 | 
         
            -
            RUN ls -l ${LAMBDA_TASK_ROOT}/.venv
         
     | 
| 58 | 
         
            -
             
     | 
| 59 | 
         | 
| 60 | 
         
             
            FROM python:3.11-slim-bookworm as runtime
         
     | 
| 61 | 
         | 
| 
         @@ -65,17 +59,59 @@ ARG LAMBDA_TASK_ROOT 
     | 
|
| 65 | 
         
             
            ENV VIRTUAL_ENV=${LAMBDA_TASK_ROOT}/.venv \
         
     | 
| 66 | 
         
             
                PATH="${LAMBDA_TASK_ROOT}/.venv/bin:$PATH"
         
     | 
| 67 | 
         | 
| 68 | 
         
            -
            RUN echo "COPY --from= 
     | 
| 69 | 
         
            -
            COPY --from= 
     | 
| 70 | 
         
            -
            COPY --from= 
     | 
| 71 | 
         | 
| 72 | 
         
             
            RUN echo "new LAMBDA_TASK_ROOT after hidden venv copy => ${LAMBDA_TASK_ROOT}"
         
     | 
| 73 | 
         
             
            RUN ls -ld ${LAMBDA_TASK_ROOT}/
         
     | 
| 74 | 
         
             
            RUN ls -lA ${LAMBDA_TASK_ROOT}/
         
     | 
| 75 | 
         | 
| 76 | 
         
            -
             
     | 
| 77 | 
         
            -
            COPY --from=builder /usr/local/bin/aws-lambda-rie /usr/local/bin/aws-lambda-rie
         
     | 
| 78 | 
         
             
            RUN chmod +x /usr/local/bin/aws-lambda-rie
         
     | 
| 79 | 
         
             
            COPY ./scripts/lambda-entrypoint.sh /lambda-entrypoint.sh
         
     | 
| 80 | 
         
             
            RUN chmod +x /lambda-entrypoint.sh
         
     | 
| 81 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            # Include global ARGs at the dockerfile top
         
     | 
| 2 | 
         
             
            ARG ARCH="x86_64"
         
     | 
| 3 | 
         
             
            ARG LAMBDA_TASK_ROOT="/var/task"
         
     | 
| 4 | 
         
            +
            ARG FASTAPI_STATIC="${LAMBDA_TASK_ROOT}/static"
         
     | 
| 5 | 
         
             
            ARG PYTHONPATH="${LAMBDA_TASK_ROOT}:${PYTHONPATH}:/usr/local/lib/python3/dist-packages"
         
     | 
| 6 | 
         
             
            ARG POETRY_NO_INTERACTION=1
         
     | 
| 7 | 
         
             
            ARG POETRY_VIRTUALENVS_IN_PROJECT=1
         
     | 
| 
         | 
|
| 10 | 
         
             
            ARG RIE="https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie"
         
     | 
| 11 | 
         | 
| 12 | 
         | 
| 13 | 
         
            +
            FROM python:3.11-bookworm as builder_global
         
     | 
| 14 | 
         | 
| 15 | 
         
             
            ARG ARCH
         
     | 
| 16 | 
         
             
            ARG LAMBDA_TASK_ROOT
         
     | 
| 
         | 
|
| 29 | 
         
             
            RUN echo "ARG PYTHONPATH: $PYTHONPATH ..."
         
     | 
| 30 | 
         
             
            RUN test -n ${DEPENDENCY_GROUP:?}
         
     | 
| 31 | 
         
             
            RUN echo "python DEPENDENCY_GROUP: ${DEPENDENCY_GROUP} ..."
         
     | 
| 32 | 
         
            +
            RUN echo "arg dep:"
         
     | 
| 33 | 
         | 
| 34 | 
         
             
            # Set working directory to function root directory
         
     | 
| 35 | 
         
             
            WORKDIR ${LAMBDA_TASK_ROOT}
         
     | 
| 36 | 
         
             
            COPY requirements_poetry.txt pyproject.toml poetry.lock README.md ${LAMBDA_TASK_ROOT}/
         
     | 
| 37 | 
         | 
| 38 | 
         
             
            # avoid segment-geospatial exception caused by missing libGL.so.1 library
         
     | 
| 39 | 
         
            +
            # RUN apt update && apt install -y libgl1 curl python3-pip && apt clean
         
     | 
| 40 | 
         
            +
            RUN apt update && apt install -y libgl1 curl
         
     | 
| 41 | 
         
            +
            RUN apt update && apt install -y python3-pip && apt clean
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 42 | 
         | 
| 43 | 
         
             
            # poetry installation path is NOT within ${LAMBDA_TASK_ROOT}: not needed for runtime docker image
         
     | 
| 44 | 
         
             
            RUN python -m pip install -r ${LAMBDA_TASK_ROOT}/requirements_poetry.txt
         
     | 
| 
         | 
|
| 50 | 
         | 
| 51 | 
         
             
            RUN curl -Lo /usr/local/bin/aws-lambda-rie ${RIE}
         
     | 
| 52 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 53 | 
         | 
| 54 | 
         
             
            FROM python:3.11-slim-bookworm as runtime
         
     | 
| 55 | 
         | 
| 
         | 
|
| 59 | 
         
             
            ENV VIRTUAL_ENV=${LAMBDA_TASK_ROOT}/.venv \
         
     | 
| 60 | 
         
             
                PATH="${LAMBDA_TASK_ROOT}/.venv/bin:$PATH"
         
     | 
| 61 | 
         | 
| 62 | 
         
            +
            RUN echo "COPY --from=builder_global /usr/lib/${ARCH}-linux-gnu/libGL.so* /usr/lib/${ARCH}-linux-gnu/"
         
     | 
| 63 | 
         
            +
            COPY --from=builder_global /usr/lib/${ARCH}-linux-gnu/libGL.so* /usr/lib/${ARCH}-linux-gnu/
         
     | 
| 64 | 
         
            +
            COPY --from=builder_global ${LAMBDA_TASK_ROOT}/.venv ${LAMBDA_TASK_ROOT}/.venv
         
     | 
| 65 | 
         | 
| 66 | 
         
             
            RUN echo "new LAMBDA_TASK_ROOT after hidden venv copy => ${LAMBDA_TASK_ROOT}"
         
     | 
| 67 | 
         
             
            RUN ls -ld ${LAMBDA_TASK_ROOT}/
         
     | 
| 68 | 
         
             
            RUN ls -lA ${LAMBDA_TASK_ROOT}/
         
     | 
| 69 | 
         | 
| 70 | 
         
            +
            COPY --from=builder_global /usr/local/bin/aws-lambda-rie /usr/local/bin/aws-lambda-rie
         
     | 
| 
         | 
|
| 71 | 
         
             
            RUN chmod +x /usr/local/bin/aws-lambda-rie
         
     | 
| 72 | 
         
             
            COPY ./scripts/lambda-entrypoint.sh /lambda-entrypoint.sh
         
     | 
| 73 | 
         
             
            RUN chmod +x /lambda-entrypoint.sh
         
     | 
| 74 | 
         
            +
             
     | 
| 75 | 
         
            +
             
     | 
| 76 | 
         
            +
            ### conditional section
         
     | 
| 77 | 
         
            +
            FROM node:20-slim AS node_fastapi
         
     | 
| 78 | 
         
            +
             
     | 
| 79 | 
         
            +
            ARG DEPENDENCY_GROUP
         
     | 
| 80 | 
         
            +
            ENV PNPM_HOME="/pnpm"
         
     | 
| 81 | 
         
            +
            ENV PATH="$PNPM_HOME:$PATH"
         
     | 
| 82 | 
         
            +
            RUN corepack enable
         
     | 
| 83 | 
         
            +
             
     | 
| 84 | 
         
            +
            COPY ./static /appnode
         
     | 
| 85 | 
         
            +
            WORKDIR /appnode
         
     | 
| 86 | 
         
            +
            # RUN if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then echo "pnpm store path:" && pnpm store path; fi
         
     | 
| 87 | 
         
            +
             
     | 
| 88 | 
         
            +
             
     | 
| 89 | 
         
            +
            FROM node_fastapi AS node_prod_deps
         
     | 
| 90 | 
         
            +
             
     | 
| 91 | 
         
            +
            ARG DEPENDENCY_GROUP
         
     | 
| 92 | 
         
            +
            RUN --mount=type=cache,id=pnpm,target=/pnpm/store if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then \
         
     | 
| 93 | 
         
            +
                pnpm install --prod --frozen-lockfile; else \
         
     | 
| 94 | 
         
            +
                echo "DEPENDENCY_GROUP 1: ${DEPENDENCY_GROUP} ..."; fi
         
     | 
| 95 | 
         
            +
            # here multiple conditions concatenated to avoid failing on check
         
     | 
| 96 | 
         
            +
            RUN if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then if [ ! -d /appnode/node_modules ]; then echo "no node_modules folder" && exit 1; fi; fi
         
     | 
| 97 | 
         
            +
             
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
            FROM node_fastapi AS node_build
         
     | 
| 100 | 
         
            +
             
     | 
| 101 | 
         
            +
            ARG DEPENDENCY_GROUP
         
     | 
| 102 | 
         
            +
            RUN --mount=type=cache,id=pnpm,target=/pnpm/store if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then \
         
     | 
| 103 | 
         
            +
                pnpm install --frozen-lockfile; else \
         
     | 
| 104 | 
         
            +
                echo "DEPENDENCY_GROUP 2: ${DEPENDENCY_GROUP} ..."; fi
         
     | 
| 105 | 
         
            +
            RUN --mount=type=cache,id=pnpm,target=/pnpm/store if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then \
         
     | 
| 106 | 
         
            +
                pnpm build; fi
         
     | 
| 107 | 
         
            +
            RUN --mount=type=cache,id=pnpm,target=/pnpm/store if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then \
         
     | 
| 108 | 
         
            +
                pnpm tailwindcss -i /appnode/src/input.css -o /appnode/dist/output.css; fi
         
     | 
| 109 | 
         
            +
            RUN if [ "${DEPENDENCY_GROUP}" = "fastapi" ]; then if [ ! -d /appnode/dist ]; then echo "no dist folder" && exit 1; fi; fi
         
     | 
| 110 | 
         
            +
             
     | 
| 111 | 
         
            +
             
     | 
| 112 | 
         
            +
            FROM runtime
         
     | 
| 113 | 
         
            +
            ARG FASTAPI_STATIC
         
     | 
| 114 | 
         
            +
            RUN mkdir ${FASTAPI_STATIC}
         
     | 
| 115 | 
         
            +
             
     | 
| 116 | 
         
            +
            COPY --from=node_prod_deps /appnode/node_modules* ${FASTAPI_STATIC}/node_modules
         
     | 
| 117 | 
         
            +
            COPY --from=node_build /appnode/dist* ${FASTAPI_STATIC}/dist
         
     | 
    	
        static/.gitignore
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            # Logs
         
     | 
| 2 | 
         
            +
            logs
         
     | 
| 3 | 
         
            +
            *.log
         
     | 
| 4 | 
         
            +
            npm-debug.log*
         
     | 
| 5 | 
         
            +
            yarn-debug.log*
         
     | 
| 6 | 
         
            +
            yarn-error.log*
         
     | 
| 7 | 
         
            +
            pnpm-debug.log*
         
     | 
| 8 | 
         
            +
            lerna-debug.log*
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            node_modules
         
     | 
| 11 | 
         
            +
            .DS_Store
         
     | 
| 12 | 
         
            +
            dist
         
     | 
| 13 | 
         
            +
            dist-ssr
         
     | 
| 14 | 
         
            +
            coverage
         
     | 
| 15 | 
         
            +
            *.local
         
     | 
| 16 | 
         
            +
             
     | 
| 17 | 
         
            +
            tmp*/*
         
     | 
| 18 | 
         
            +
            /cypress/videos/
         
     | 
| 19 | 
         
            +
            /cypress/screenshots/
         
     | 
| 20 | 
         
            +
            vite.config.ts.*
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            # Editor directories and files
         
     | 
| 23 | 
         
            +
            .vscode/*
         
     | 
| 24 | 
         
            +
            !.vscode/extensions.json
         
     | 
| 25 | 
         
            +
            .idea
         
     | 
| 26 | 
         
            +
            *.suo
         
     | 
| 27 | 
         
            +
            *.ntvs*
         
     | 
| 28 | 
         
            +
            *.njsproj
         
     | 
| 29 | 
         
            +
            *.sln
         
     | 
| 30 | 
         
            +
            *.sw?
         
     | 
| 31 | 
         
            +
             
     | 
| 32 | 
         
            +
            test-results/
         
     | 
| 33 | 
         
            +
            playwright-report/
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
            .env*
         
     | 
| 36 | 
         
            +
             
     | 
| 37 | 
         
            +
            # cloudflare workers
         
     | 
| 38 | 
         
            +
            .wrangler
         
     | 
    	
        static/.prettierrc.json
    ADDED
    
    | 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            {
         
     | 
| 2 | 
         
            +
              "$schema": "https://json.schemastore.org/prettierrc",
         
     | 
| 3 | 
         
            +
              "semi": false,
         
     | 
| 4 | 
         
            +
              "tabWidth": 2,
         
     | 
| 5 | 
         
            +
              "singleQuote": true,
         
     | 
| 6 | 
         
            +
              "printWidth": 100,
         
     | 
| 7 | 
         
            +
              "trailingComma": "none"
         
     | 
| 8 | 
         
            +
            }
         
     | 
    	
        static/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,176 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
                                             Apache License
         
     | 
| 2 | 
         
            +
                                       Version 2.0, January 2004
         
     | 
| 3 | 
         
            +
                                    http://www.apache.org/licenses/
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
               TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
               1. Definitions.
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
                  "License" shall mean the terms and conditions for use, reproduction,
         
     | 
| 10 | 
         
            +
                  and distribution as defined by Sections 1 through 9 of this document.
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
                  "Licensor" shall mean the copyright owner or entity authorized by
         
     | 
| 13 | 
         
            +
                  the copyright owner that is granting the License.
         
     | 
| 14 | 
         
            +
             
     | 
| 15 | 
         
            +
                  "Legal Entity" shall mean the union of the acting entity and all
         
     | 
| 16 | 
         
            +
                  other entities that control, are controlled by, or are under common
         
     | 
| 17 | 
         
            +
                  control with that entity. For the purposes of this definition,
         
     | 
| 18 | 
         
            +
                  "control" means (i) the power, direct or indirect, to cause the
         
     | 
| 19 | 
         
            +
                  direction or management of such entity, whether by contract or
         
     | 
| 20 | 
         
            +
                  otherwise, or (ii) ownership of fifty percent (50%) or more of the
         
     | 
| 21 | 
         
            +
                  outstanding shares, or (iii) beneficial ownership of such entity.
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
                  "You" (or "Your") shall mean an individual or Legal Entity
         
     | 
| 24 | 
         
            +
                  exercising permissions granted by this License.
         
     | 
| 25 | 
         
            +
             
     | 
| 26 | 
         
            +
                  "Source" form shall mean the preferred form for making modifications,
         
     | 
| 27 | 
         
            +
                  including but not limited to software source code, documentation
         
     | 
| 28 | 
         
            +
                  source, and configuration files.
         
     | 
| 29 | 
         
            +
             
     | 
| 30 | 
         
            +
                  "Object" form shall mean any form resulting from mechanical
         
     | 
| 31 | 
         
            +
                  transformation or translation of a Source form, including but
         
     | 
| 32 | 
         
            +
                  not limited to compiled object code, generated documentation,
         
     | 
| 33 | 
         
            +
                  and conversions to other media types.
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
                  "Work" shall mean the work of authorship, whether in Source or
         
     | 
| 36 | 
         
            +
                  Object form, made available under the License, as indicated by a
         
     | 
| 37 | 
         
            +
                  copyright notice that is included in or attached to the work
         
     | 
| 38 | 
         
            +
                  (an example is provided in the Appendix below).
         
     | 
| 39 | 
         
            +
             
     | 
| 40 | 
         
            +
                  "Derivative Works" shall mean any work, whether in Source or Object
         
     | 
| 41 | 
         
            +
                  form, that is based on (or derived from) the Work and for which the
         
     | 
| 42 | 
         
            +
                  editorial revisions, annotations, elaborations, or other modifications
         
     | 
| 43 | 
         
            +
                  represent, as a whole, an original work of authorship. For the purposes
         
     | 
| 44 | 
         
            +
                  of this License, Derivative Works shall not include works that remain
         
     | 
| 45 | 
         
            +
                  separable from, or merely link (or bind by name) to the interfaces of,
         
     | 
| 46 | 
         
            +
                  the Work and Derivative Works thereof.
         
     | 
| 47 | 
         
            +
             
     | 
| 48 | 
         
            +
                  "Contribution" shall mean any work of authorship, including
         
     | 
| 49 | 
         
            +
                  the original version of the Work and any modifications or additions
         
     | 
| 50 | 
         
            +
                  to that Work or Derivative Works thereof, that is intentionally
         
     | 
| 51 | 
         
            +
                  submitted to Licensor for inclusion in the Work by the copyright owner
         
     | 
| 52 | 
         
            +
                  or by an individual or Legal Entity authorized to submit on behalf of
         
     | 
| 53 | 
         
            +
                  the copyright owner. For the purposes of this definition, "submitted"
         
     | 
| 54 | 
         
            +
                  means any form of electronic, verbal, or written communication sent
         
     | 
| 55 | 
         
            +
                  to the Licensor or its representatives, including but not limited to
         
     | 
| 56 | 
         
            +
                  communication on electronic mailing lists, source code control systems,
         
     | 
| 57 | 
         
            +
                  and issue tracking systems that are managed by, or on behalf of, the
         
     | 
| 58 | 
         
            +
                  Licensor for the purpose of discussing and improving the Work, but
         
     | 
| 59 | 
         
            +
                  excluding communication that is conspicuously marked or otherwise
         
     | 
| 60 | 
         
            +
                  designated in writing by the copyright owner as "Not a Contribution."
         
     | 
| 61 | 
         
            +
             
     | 
| 62 | 
         
            +
                  "Contributor" shall mean Licensor and any individual or Legal Entity
         
     | 
| 63 | 
         
            +
                  on behalf of whom a Contribution has been received by Licensor and
         
     | 
| 64 | 
         
            +
                  subsequently incorporated within the Work.
         
     | 
| 65 | 
         
            +
             
     | 
| 66 | 
         
            +
               2. Grant of Copyright License. Subject to the terms and conditions of
         
     | 
| 67 | 
         
            +
                  this License, each Contributor hereby grants to You a perpetual,
         
     | 
| 68 | 
         
            +
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
         
     | 
| 69 | 
         
            +
                  copyright license to reproduce, prepare Derivative Works of,
         
     | 
| 70 | 
         
            +
                  publicly display, publicly perform, sublicense, and distribute the
         
     | 
| 71 | 
         
            +
                  Work and such Derivative Works in Source or Object form.
         
     | 
| 72 | 
         
            +
             
     | 
| 73 | 
         
            +
               3. Grant of Patent License. Subject to the terms and conditions of
         
     | 
| 74 | 
         
            +
                  this License, each Contributor hereby grants to You a perpetual,
         
     | 
| 75 | 
         
            +
                  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
         
     | 
| 76 | 
         
            +
                  (except as stated in this section) patent license to make, have made,
         
     | 
| 77 | 
         
            +
                  use, offer to sell, sell, import, and otherwise transfer the Work,
         
     | 
| 78 | 
         
            +
                  where such license applies only to those patent claims licensable
         
     | 
| 79 | 
         
            +
                  by such Contributor that are necessarily infringed by their
         
     | 
| 80 | 
         
            +
                  Contribution(s) alone or by combination of their Contribution(s)
         
     | 
| 81 | 
         
            +
                  with the Work to which such Contribution(s) was submitted. If You
         
     | 
| 82 | 
         
            +
                  institute patent litigation against any entity (including a
         
     | 
| 83 | 
         
            +
                  cross-claim or counterclaim in a lawsuit) alleging that the Work
         
     | 
| 84 | 
         
            +
                  or a Contribution incorporated within the Work constitutes direct
         
     | 
| 85 | 
         
            +
                  or contributory patent infringement, then any patent licenses
         
     | 
| 86 | 
         
            +
                  granted to You under this License for that Work shall terminate
         
     | 
| 87 | 
         
            +
                  as of the date such litigation is filed.
         
     | 
| 88 | 
         
            +
             
     | 
| 89 | 
         
            +
               4. Redistribution. You may reproduce and distribute copies of the
         
     | 
| 90 | 
         
            +
                  Work or Derivative Works thereof in any medium, with or without
         
     | 
| 91 | 
         
            +
                  modifications, and in Source or Object form, provided that You
         
     | 
| 92 | 
         
            +
                  meet the following conditions:
         
     | 
| 93 | 
         
            +
             
     | 
| 94 | 
         
            +
                  (a) You must give any other recipients of the Work or
         
     | 
| 95 | 
         
            +
                      Derivative Works a copy of this License; and
         
     | 
| 96 | 
         
            +
             
     | 
| 97 | 
         
            +
                  (b) You must cause any modified files to carry prominent notices
         
     | 
| 98 | 
         
            +
                      stating that You changed the files; and
         
     | 
| 99 | 
         
            +
             
     | 
| 100 | 
         
            +
                  (c) You must retain, in the Source form of any Derivative Works
         
     | 
| 101 | 
         
            +
                      that You distribute, all copyright, patent, trademark, and
         
     | 
| 102 | 
         
            +
                      attribution notices from the Source form of the Work,
         
     | 
| 103 | 
         
            +
                      excluding those notices that do not pertain to any part of
         
     | 
| 104 | 
         
            +
                      the Derivative Works; and
         
     | 
| 105 | 
         
            +
             
     | 
| 106 | 
         
            +
                  (d) If the Work includes a "NOTICE" text file as part of its
         
     | 
| 107 | 
         
            +
                      distribution, then any Derivative Works that You distribute must
         
     | 
| 108 | 
         
            +
                      include a readable copy of the attribution notices contained
         
     | 
| 109 | 
         
            +
                      within such NOTICE file, excluding those notices that do not
         
     | 
| 110 | 
         
            +
                      pertain to any part of the Derivative Works, in at least one
         
     | 
| 111 | 
         
            +
                      of the following places: within a NOTICE text file distributed
         
     | 
| 112 | 
         
            +
                      as part of the Derivative Works; within the Source form or
         
     | 
| 113 | 
         
            +
                      documentation, if provided along with the Derivative Works; or,
         
     | 
| 114 | 
         
            +
                      within a display generated by the Derivative Works, if and
         
     | 
| 115 | 
         
            +
                      wherever such third-party notices normally appear. The contents
         
     | 
| 116 | 
         
            +
                      of the NOTICE file are for informational purposes only and
         
     | 
| 117 | 
         
            +
                      do not modify the License. You may add Your own attribution
         
     | 
| 118 | 
         
            +
                      notices within Derivative Works that You distribute, alongside
         
     | 
| 119 | 
         
            +
                      or as an addendum to the NOTICE text from the Work, provided
         
     | 
| 120 | 
         
            +
                      that such additional attribution notices cannot be construed
         
     | 
| 121 | 
         
            +
                      as modifying the License.
         
     | 
| 122 | 
         
            +
             
     | 
| 123 | 
         
            +
                  You may add Your own copyright statement to Your modifications and
         
     | 
| 124 | 
         
            +
                  may provide additional or different license terms and conditions
         
     | 
| 125 | 
         
            +
                  for use, reproduction, or distribution of Your modifications, or
         
     | 
| 126 | 
         
            +
                  for any such Derivative Works as a whole, provided Your use,
         
     | 
| 127 | 
         
            +
                  reproduction, and distribution of the Work otherwise complies with
         
     | 
| 128 | 
         
            +
                  the conditions stated in this License.
         
     | 
| 129 | 
         
            +
             
     | 
| 130 | 
         
            +
               5. Submission of Contributions. Unless You explicitly state otherwise,
         
     | 
| 131 | 
         
            +
                  any Contribution intentionally submitted for inclusion in the Work
         
     | 
| 132 | 
         
            +
                  by You to the Licensor shall be under the terms and conditions of
         
     | 
| 133 | 
         
            +
                  this License, without any additional terms or conditions.
         
     | 
| 134 | 
         
            +
                  Notwithstanding the above, nothing herein shall supersede or modify
         
     | 
| 135 | 
         
            +
                  the terms of any separate license agreement you may have executed
         
     | 
| 136 | 
         
            +
                  with Licensor regarding such Contributions.
         
     | 
| 137 | 
         
            +
             
     | 
| 138 | 
         
            +
               6. Trademarks. This License does not grant permission to use the trade
         
     | 
| 139 | 
         
            +
                  names, trademarks, service marks, or product names of the Licensor,
         
     | 
| 140 | 
         
            +
                  except as required for reasonable and customary use in describing the
         
     | 
| 141 | 
         
            +
                  origin of the Work and reproducing the content of the NOTICE file.
         
     | 
| 142 | 
         
            +
             
     | 
| 143 | 
         
            +
               7. Disclaimer of Warranty. Unless required by applicable law or
         
     | 
| 144 | 
         
            +
                  agreed to in writing, Licensor provides the Work (and each
         
     | 
| 145 | 
         
            +
                  Contributor provides its Contributions) on an "AS IS" BASIS,
         
     | 
| 146 | 
         
            +
                  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
         
     | 
| 147 | 
         
            +
                  implied, including, without limitation, any warranties or conditions
         
     | 
| 148 | 
         
            +
                  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
         
     | 
| 149 | 
         
            +
                  PARTICULAR PURPOSE. You are solely responsible for determining the
         
     | 
| 150 | 
         
            +
                  appropriateness of using or redistributing the Work and assume any
         
     | 
| 151 | 
         
            +
                  risks associated with Your exercise of permissions under this License.
         
     | 
| 152 | 
         
            +
             
     | 
| 153 | 
         
            +
               8. Limitation of Liability. In no event and under no legal theory,
         
     | 
| 154 | 
         
            +
                  whether in tort (including negligence), contract, or otherwise,
         
     | 
| 155 | 
         
            +
                  unless required by applicable law (such as deliberate and grossly
         
     | 
| 156 | 
         
            +
                  negligent acts) or agreed to in writing, shall any Contributor be
         
     | 
| 157 | 
         
            +
                  liable to You for damages, including any direct, indirect, special,
         
     | 
| 158 | 
         
            +
                  incidental, or consequential damages of any character arising as a
         
     | 
| 159 | 
         
            +
                  result of this License or out of the use or inability to use the
         
     | 
| 160 | 
         
            +
                  Work (including but not limited to damages for loss of goodwill,
         
     | 
| 161 | 
         
            +
                  work stoppage, computer failure or malfunction, or any and all
         
     | 
| 162 | 
         
            +
                  other commercial damages or losses), even if such Contributor
         
     | 
| 163 | 
         
            +
                  has been advised of the possibility of such damages.
         
     | 
| 164 | 
         
            +
             
     | 
| 165 | 
         
            +
               9. Accepting Warranty or Additional Liability. While redistributing
         
     | 
| 166 | 
         
            +
                  the Work or Derivative Works thereof, You may choose to offer,
         
     | 
| 167 | 
         
            +
                  and charge a fee for, acceptance of support, warranty, indemnity,
         
     | 
| 168 | 
         
            +
                  or other liability obligations and/or rights consistent with this
         
     | 
| 169 | 
         
            +
                  License. However, in accepting such obligations, You may act only
         
     | 
| 170 | 
         
            +
                  on Your own behalf and on Your sole responsibility, not on behalf
         
     | 
| 171 | 
         
            +
                  of any other Contributor, and only if You agree to indemnify,
         
     | 
| 172 | 
         
            +
                  defend, and hold each Contributor harmless for any liability
         
     | 
| 173 | 
         
            +
                  incurred by, or claims asserted against, such Contributor by reason
         
     | 
| 174 | 
         
            +
                  of your accepting any such warranty or additional liability.
         
     | 
| 175 | 
         
            +
             
     | 
| 176 | 
         
            +
               END OF TERMS AND CONDITIONS
         
     | 
    	
        static/NOTICE
    ADDED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        static/README.md
    ADDED
    
    | 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            # ml-tornidor
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            ## Local development
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            Since I use Cloudflare pages as hosting for this project there are some required steps to do before it's possible to start a local development environment. This project needs to wrap the node commands with the `npx wrangler [...]` utility to emulate a Cloudflare Worker function. Because this worker function is under auth which use some env variables I to write these env variables inline. Every time I changed or added needed some variables I also needed to update the `npx wrangler` command. To avoid this I prepared a js script, executed by [Deno](https://deno.land/), that read the env variables from the `.env` file composing the command:
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            1. prepare the .env file copying the template.env file
         
     | 
| 8 | 
         
            +
            2. run the local environment using the command `pnpm dev` or `deno run -A runner.js`
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            In case of new or updated packages Deno installs the dependencies at the first execution. Do it with a execution  without the `npx wrangler` wrapper:
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            ```bash
         
     | 
| 13 | 
         
            +
            deno run -A --node-modules-dir npm:vite
         
     | 
| 14 | 
         
            +
            ```
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
            In case of problem:
         
     | 
| 17 | 
         
            +
             
     | 
| 18 | 
         
            +
            1. try executing again the command `deno run -A --node-modules-dir npm:vite`
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
            If this don't solve the problems try to
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            1. delete the node_modules folder
         
     | 
| 23 | 
         
            +
            2. reinstall the npm packages with `pnpm install`
         
     | 
| 24 | 
         
            +
            3. Run again the local development server, this time with the standard command
         
     | 
| 25 | 
         
            +
             
     | 
| 26 | 
         
            +
            Before to commit try also to build using
         
     | 
| 27 | 
         
            +
             
     | 
| 28 | 
         
            +
            ```bash
         
     | 
| 29 | 
         
            +
            pnpm build
         
     | 
| 30 | 
         
            +
            ```
         
     | 
| 31 | 
         
            +
             
     | 
| 32 | 
         
            +
            Then run the preview (change the example variables):
         
     | 
| 33 | 
         
            +
             
     | 
| 34 | 
         
            +
            ```bash
         
     | 
| 35 | 
         
            +
            npx wrangler pages dev --binding VITE_AUTH0_DOMAIN="example-auth0.eu.auth0.com" API_URL="https://example-aws.execute-api.eu-west-1.amazonaws.com/localhost/lambda-ml-fastsam-api" VITE_AUTH0_AUDIENCE="http://localhost-ml-lambda/" API_DOMAIN=example-aws.execute-api.eu-west-1.amazonaws.com CORS_ALLOWED_DOMAIN=http://localhost:8788 VITE_SATELLITE_NAME="tile-provider.image-type" -- pnpm preview
         
     | 
| 36 | 
         
            +
            ```
         
     | 
    	
        static/app.js
    DELETED
    
    | 
         @@ -1,35 +0,0 @@ 
     | 
|
| 1 | 
         
            -
            const jsonBtn = document.getElementById("getJson");
         
     | 
| 2 | 
         
            -
            const apiBtn = document.getElementById("getApi");
         
     | 
| 3 | 
         
            -
            const output = document.getElementById("output");
         
     | 
| 4 | 
         
            -
            const coordsForm = document.getElementById("coords-form");
         
     | 
| 5 | 
         
            -
             
     | 
| 6 | 
         
            -
            function formData2json(dataId, newObj={}) {
         
     | 
| 7 | 
         
            -
                const formData = new FormData(dataId);
         
     | 
| 8 | 
         
            -
                formData.forEach(function(value, key){
         
     | 
| 9 | 
         
            -
                    console.log(`formData2json:: key=${key}, value=${value}.`)
         
     | 
| 10 | 
         
            -
                    newObj[key] = value;
         
     | 
| 11 | 
         
            -
                });
         
     | 
| 12 | 
         
            -
                return JSON.stringify(newObj);
         
     | 
| 13 | 
         
            -
            }
         
     | 
| 14 | 
         
            -
             
     | 
| 15 | 
         
            -
            coordsForm.addEventListener('submit', event => {
         
     | 
| 16 | 
         
            -
                event.preventDefault();
         
     | 
| 17 | 
         
            -
                console.log("coordsForm::", coordsForm, "#")
         
     | 
| 18 | 
         
            -
                const inputJson = formData2json(coordsForm)
         
     | 
| 19 | 
         
            -
                console.log("inputJson", inputJson, "#");
         
     | 
| 20 | 
         
            -
             
     | 
| 21 | 
         
            -
                fetch('/infer_samgis', {
         
     | 
| 22 | 
         
            -
                    method: 'POST', // or 'PUT'
         
     | 
| 23 | 
         
            -
                    body: inputJson,  // a FormData will automatically set the 'Content-Type',
         
     | 
| 24 | 
         
            -
                    headers: {"Content-Type": "application/json"},
         
     | 
| 25 | 
         
            -
                }).then(function (response) {
         
     | 
| 26 | 
         
            -
                    return response.json();
         
     | 
| 27 | 
         
            -
                }).then(function (data) {
         
     | 
| 28 | 
         
            -
                    console.log("data:", data, "#")
         
     | 
| 29 | 
         
            -
                    output.innerHTML = JSON.stringify(data)
         
     | 
| 30 | 
         
            -
                }).catch(function (err) {
         
     | 
| 31 | 
         
            -
                    console.log("err:", err, "#")
         
     | 
| 32 | 
         
            -
                    output.innerHTML = `err:${JSON.stringify(err)}.`;
         
     | 
| 33 | 
         
            -
                });
         
     | 
| 34 | 
         
            -
                event.preventDefault();
         
     | 
| 35 | 
         
            -
            });
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
    	
        static/env.d.ts
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            /// <reference types="vite/client" />
         
     | 
    	
        static/index.html
    CHANGED
    
    | 
         @@ -1,44 +1,18 @@ 
     | 
|
| 1 | 
         
             
            <!DOCTYPE html>
         
     | 
| 2 | 
         
             
            <html lang="en">
         
     | 
| 3 | 
         
            -
            <head>
         
     | 
| 4 | 
         
            -
                <meta charset=" 
     | 
| 5 | 
         
             
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
         
     | 
| 6 | 
         
            -
                < 
     | 
| 7 | 
         
            -
                <link rel="stylesheet"  
     | 
| 8 | 
         
            -
                < 
     | 
| 9 | 
         
            -
             
     | 
| 10 | 
         
            -
            < 
     | 
| 11 | 
         
            -
                < 
     | 
| 12 | 
         
            -
             
     | 
| 13 | 
         
            -
             
     | 
| 14 | 
         
            -
             
     | 
| 15 | 
         
            -
             
     | 
| 16 | 
         
            -
             
     | 
| 17 | 
         
            -
             
     | 
| 18 | 
         
            -
                            bbox: x2 <input type="number" id="y-center-form" name="x2" value="37.6311"/>
         
     | 
| 19 | 
         
            -
                        </label>
         
     | 
| 20 | 
         
            -
                        <label>
         
     | 
| 21 | 
         
            -
                            bbox: y1 <input type="number" id="y-center-form" name="y1" value="-122.1203"/>
         
     | 
| 22 | 
         
            -
                        </label>
         
     | 
| 23 | 
         
            -
                        <label>
         
     | 
| 24 | 
         
            -
                            bbox: y2 <input type="number" id="y-center-form" name="y2" value="37.6458"/>
         
     | 
| 25 | 
         
            -
                        </label>
         
     | 
| 26 | 
         
            -
                        <br/><br/>
         
     | 
| 27 | 
         
            -
                        <label>
         
     | 
| 28 | 
         
            -
                            x point: <input type="number" id="x-form" name="x" value="-122.1419"/>
         
     | 
| 29 | 
         
            -
                        </label>
         
     | 
| 30 | 
         
            -
                        <label>
         
     | 
| 31 | 
         
            -
                            y point: <input type="number" id="y-form" name="y" value="37.6383"/>
         
     | 
| 32 | 
         
            -
                        </label>
         
     | 
| 33 | 
         
            -
                        <label>
         
     | 
| 34 | 
         
            -
                            zoom: <input type="number" id="zoom" name="y" value="6"/>
         
     | 
| 35 | 
         
            -
                        </label>
         
     | 
| 36 | 
         
            -
                        <br/><br/>
         
     | 
| 37 | 
         
            -
                        <button type="submit" id="submit-btn">submit form</button>
         
     | 
| 38 | 
         
            -
                      </form>
         
     | 
| 39 | 
         
            -
                    <br><br>
         
     | 
| 40 | 
         
            -
                    <div id="output"></div>     
         
     | 
| 41 | 
         
            -
                </div>
         
     | 
| 42 | 
         
            -
                <script src="app.js"></script>
         
     | 
| 43 | 
         
            -
            </body>
         
     | 
| 44 | 
         
             
            </html>
         
     | 
| 
         | 
|
| 1 | 
         
             
            <!DOCTYPE html>
         
     | 
| 2 | 
         
             
            <html lang="en">
         
     | 
| 3 | 
         
            +
              <head>
         
     | 
| 4 | 
         
            +
                <meta charset="utf-8" />
         
     | 
| 5 | 
         
             
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
         
     | 
| 6 | 
         
            +
                <link href="output.css" rel="stylesheet" type="text/css">
         
     | 
| 7 | 
         
            +
                <link href="dist/output.css" rel="stylesheet" type="text/css">
         
     | 
| 8 | 
         
            +
                <link rel="icon" href="/favicon.ico" sizes="32x32">
         
     | 
| 9 | 
         
            +
                <link rel="icon" href="/icon.svg" type="image/svg+xml">
         
     | 
| 10 | 
         
            +
                <link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 -->
         
     | 
| 11 | 
         
            +
                <link rel="manifest" href="/manifest.webmanifest">
         
     | 
| 12 | 
         
            +
                <title>ML on GIS</title>
         
     | 
| 13 | 
         
            +
              </head>
         
     | 
| 14 | 
         
            +
              <body>
         
     | 
| 15 | 
         
            +
                <div id="root"></div>
         
     | 
| 16 | 
         
            +
                <script type="module" src="/src/main.ts"></script>
         
     | 
| 17 | 
         
            +
              </body>
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 18 | 
         
             
            </html>
         
     | 
    	
        static/package.json
    ADDED
    
    | 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            {
         
     | 
| 2 | 
         
            +
              "name": "ml-trinca",
         
     | 
| 3 | 
         
            +
              "version": "1.0.0",
         
     | 
| 4 | 
         
            +
              "private": true,
         
     | 
| 5 | 
         
            +
              "scripts": {
         
     | 
| 6 | 
         
            +
                "dev": "vite",
         
     | 
| 7 | 
         
            +
                "build": "vite build",
         
     | 
| 8 | 
         
            +
                "preview": "vite preview --port 5173",
         
     | 
| 9 | 
         
            +
                "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
         
     | 
| 10 | 
         
            +
              },
         
     | 
| 11 | 
         
            +
              "type": "module",
         
     | 
| 12 | 
         
            +
              "dependencies": {
         
     | 
| 13 | 
         
            +
                "@geoman-io/leaflet-geoman-free": "^2.15.0",
         
     | 
| 14 | 
         
            +
                "leaflet": "^1.9.4",
         
     | 
| 15 | 
         
            +
                "leaflet-providers": "^2.0.0",
         
     | 
| 16 | 
         
            +
                "vue": "^3.3.12"
         
     | 
| 17 | 
         
            +
              },
         
     | 
| 18 | 
         
            +
              "devDependencies": {
         
     | 
| 19 | 
         
            +
                "@headlessui/vue": "^1.7.16",
         
     | 
| 20 | 
         
            +
                "@heroicons/vue": "^2.0.18",
         
     | 
| 21 | 
         
            +
                "@tsconfig/node20": "^20.1.2",
         
     | 
| 22 | 
         
            +
                "@types/leaflet": "^1.9.8",
         
     | 
| 23 | 
         
            +
                "@types/node": "^20.10.5",
         
     | 
| 24 | 
         
            +
                "@vitejs/plugin-vue": "^4.5.2",
         
     | 
| 25 | 
         
            +
                "@vue/tsconfig": "^0.5.1",
         
     | 
| 26 | 
         
            +
                "autoprefixer": "^10.4.16",
         
     | 
| 27 | 
         
            +
                "eslint": "^8.56.0",
         
     | 
| 28 | 
         
            +
                "eslint-plugin-vue": "^9.19.2",
         
     | 
| 29 | 
         
            +
                "postcss": "^8.4.32",
         
     | 
| 30 | 
         
            +
                "postcss-import": "^15.1.0",
         
     | 
| 31 | 
         
            +
                "prettier": "^3.1.1",
         
     | 
| 32 | 
         
            +
                "tailwindcss": "^3.3.6",
         
     | 
| 33 | 
         
            +
                "vite": "^5.0.10"
         
     | 
| 34 | 
         
            +
              }
         
     | 
| 35 | 
         
            +
            }
         
     | 
    	
        static/pnpm-lock.yaml
    ADDED
    
    | 
         @@ -0,0 +1,2063 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            lockfileVersion: '6.0'
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            settings:
         
     | 
| 4 | 
         
            +
              autoInstallPeers: true
         
     | 
| 5 | 
         
            +
              excludeLinksFromLockfile: false
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            dependencies:
         
     | 
| 8 | 
         
            +
              '@geoman-io/leaflet-geoman-free':
         
     | 
| 9 | 
         
            +
                specifier: ^2.15.0
         
     | 
| 10 | 
         
            +
                version: 2.15.0(leaflet@1.9.4)
         
     | 
| 11 | 
         
            +
              leaflet:
         
     | 
| 12 | 
         
            +
                specifier: ^1.9.4
         
     | 
| 13 | 
         
            +
                version: 1.9.4
         
     | 
| 14 | 
         
            +
              leaflet-providers:
         
     | 
| 15 | 
         
            +
                specifier: ^2.0.0
         
     | 
| 16 | 
         
            +
                version: 2.0.0
         
     | 
| 17 | 
         
            +
              vue:
         
     | 
| 18 | 
         
            +
                specifier: ^3.3.12
         
     | 
| 19 | 
         
            +
                version: 3.3.13
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
            devDependencies:
         
     | 
| 22 | 
         
            +
              '@headlessui/vue':
         
     | 
| 23 | 
         
            +
                specifier: ^1.7.16
         
     | 
| 24 | 
         
            +
                version: 1.7.16(vue@3.3.13)
         
     | 
| 25 | 
         
            +
              '@heroicons/vue':
         
     | 
| 26 | 
         
            +
                specifier: ^2.0.18
         
     | 
| 27 | 
         
            +
                version: 2.1.1(vue@3.3.13)
         
     | 
| 28 | 
         
            +
              '@tsconfig/node20':
         
     | 
| 29 | 
         
            +
                specifier: ^20.1.2
         
     | 
| 30 | 
         
            +
                version: 20.1.2
         
     | 
| 31 | 
         
            +
              '@types/leaflet':
         
     | 
| 32 | 
         
            +
                specifier: ^1.9.8
         
     | 
| 33 | 
         
            +
                version: 1.9.8
         
     | 
| 34 | 
         
            +
              '@types/node':
         
     | 
| 35 | 
         
            +
                specifier: ^20.10.5
         
     | 
| 36 | 
         
            +
                version: 20.10.5
         
     | 
| 37 | 
         
            +
              '@vitejs/plugin-vue':
         
     | 
| 38 | 
         
            +
                specifier: ^4.5.2
         
     | 
| 39 | 
         
            +
                version: 4.5.2(vite@5.0.10)(vue@3.3.13)
         
     | 
| 40 | 
         
            +
              '@vue/tsconfig':
         
     | 
| 41 | 
         
            +
                specifier: ^0.5.1
         
     | 
| 42 | 
         
            +
                version: 0.5.1
         
     | 
| 43 | 
         
            +
              autoprefixer:
         
     | 
| 44 | 
         
            +
                specifier: ^10.4.16
         
     | 
| 45 | 
         
            +
                version: 10.4.16(postcss@8.4.32)
         
     | 
| 46 | 
         
            +
              eslint:
         
     | 
| 47 | 
         
            +
                specifier: ^8.56.0
         
     | 
| 48 | 
         
            +
                version: 8.56.0
         
     | 
| 49 | 
         
            +
              eslint-plugin-vue:
         
     | 
| 50 | 
         
            +
                specifier: ^9.19.2
         
     | 
| 51 | 
         
            +
                version: 9.19.2(eslint@8.56.0)
         
     | 
| 52 | 
         
            +
              postcss:
         
     | 
| 53 | 
         
            +
                specifier: ^8.4.32
         
     | 
| 54 | 
         
            +
                version: 8.4.32
         
     | 
| 55 | 
         
            +
              postcss-import:
         
     | 
| 56 | 
         
            +
                specifier: ^15.1.0
         
     | 
| 57 | 
         
            +
                version: 15.1.0(postcss@8.4.32)
         
     | 
| 58 | 
         
            +
              prettier:
         
     | 
| 59 | 
         
            +
                specifier: ^3.1.1
         
     | 
| 60 | 
         
            +
                version: 3.1.1
         
     | 
| 61 | 
         
            +
              tailwindcss:
         
     | 
| 62 | 
         
            +
                specifier: ^3.3.6
         
     | 
| 63 | 
         
            +
                version: 3.4.0
         
     | 
| 64 | 
         
            +
              vite:
         
     | 
| 65 | 
         
            +
                specifier: ^5.0.10
         
     | 
| 66 | 
         
            +
                version: 5.0.10(@types/node@20.10.5)
         
     | 
| 67 | 
         
            +
             
     | 
| 68 | 
         
            +
            packages:
         
     | 
| 69 | 
         
            +
             
     | 
| 70 | 
         
            +
              /@aashutoshrathi/word-wrap@1.2.6:
         
     | 
| 71 | 
         
            +
                resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
         
     | 
| 72 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 73 | 
         
            +
                dev: true
         
     | 
| 74 | 
         
            +
             
     | 
| 75 | 
         
            +
              /@alloc/quick-lru@5.2.0:
         
     | 
| 76 | 
         
            +
                resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
         
     | 
| 77 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 78 | 
         
            +
                dev: true
         
     | 
| 79 | 
         
            +
             
     | 
| 80 | 
         
            +
              /@babel/helper-string-parser@7.23.4:
         
     | 
| 81 | 
         
            +
                resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
         
     | 
| 82 | 
         
            +
                engines: {node: '>=6.9.0'}
         
     | 
| 83 | 
         
            +
             
     | 
| 84 | 
         
            +
              /@babel/helper-validator-identifier@7.22.20:
         
     | 
| 85 | 
         
            +
                resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
         
     | 
| 86 | 
         
            +
                engines: {node: '>=6.9.0'}
         
     | 
| 87 | 
         
            +
             
     | 
| 88 | 
         
            +
              /@babel/parser@7.23.6:
         
     | 
| 89 | 
         
            +
                resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
         
     | 
| 90 | 
         
            +
                engines: {node: '>=6.0.0'}
         
     | 
| 91 | 
         
            +
                hasBin: true
         
     | 
| 92 | 
         
            +
                dependencies:
         
     | 
| 93 | 
         
            +
                  '@babel/types': 7.23.6
         
     | 
| 94 | 
         
            +
             
     | 
| 95 | 
         
            +
              /@babel/types@7.23.6:
         
     | 
| 96 | 
         
            +
                resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
         
     | 
| 97 | 
         
            +
                engines: {node: '>=6.9.0'}
         
     | 
| 98 | 
         
            +
                dependencies:
         
     | 
| 99 | 
         
            +
                  '@babel/helper-string-parser': 7.23.4
         
     | 
| 100 | 
         
            +
                  '@babel/helper-validator-identifier': 7.22.20
         
     | 
| 101 | 
         
            +
                  to-fast-properties: 2.0.0
         
     | 
| 102 | 
         
            +
             
     | 
| 103 | 
         
            +
              /@esbuild/aix-ppc64@0.19.10:
         
     | 
| 104 | 
         
            +
                resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
         
     | 
| 105 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 106 | 
         
            +
                cpu: [ppc64]
         
     | 
| 107 | 
         
            +
                os: [aix]
         
     | 
| 108 | 
         
            +
                requiresBuild: true
         
     | 
| 109 | 
         
            +
                dev: true
         
     | 
| 110 | 
         
            +
                optional: true
         
     | 
| 111 | 
         
            +
             
     | 
| 112 | 
         
            +
              /@esbuild/android-arm64@0.19.10:
         
     | 
| 113 | 
         
            +
                resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
         
     | 
| 114 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 115 | 
         
            +
                cpu: [arm64]
         
     | 
| 116 | 
         
            +
                os: [android]
         
     | 
| 117 | 
         
            +
                requiresBuild: true
         
     | 
| 118 | 
         
            +
                dev: true
         
     | 
| 119 | 
         
            +
                optional: true
         
     | 
| 120 | 
         
            +
             
     | 
| 121 | 
         
            +
              /@esbuild/android-arm@0.19.10:
         
     | 
| 122 | 
         
            +
                resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
         
     | 
| 123 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 124 | 
         
            +
                cpu: [arm]
         
     | 
| 125 | 
         
            +
                os: [android]
         
     | 
| 126 | 
         
            +
                requiresBuild: true
         
     | 
| 127 | 
         
            +
                dev: true
         
     | 
| 128 | 
         
            +
                optional: true
         
     | 
| 129 | 
         
            +
             
     | 
| 130 | 
         
            +
              /@esbuild/android-x64@0.19.10:
         
     | 
| 131 | 
         
            +
                resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
         
     | 
| 132 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 133 | 
         
            +
                cpu: [x64]
         
     | 
| 134 | 
         
            +
                os: [android]
         
     | 
| 135 | 
         
            +
                requiresBuild: true
         
     | 
| 136 | 
         
            +
                dev: true
         
     | 
| 137 | 
         
            +
                optional: true
         
     | 
| 138 | 
         
            +
             
     | 
| 139 | 
         
            +
              /@esbuild/darwin-arm64@0.19.10:
         
     | 
| 140 | 
         
            +
                resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
         
     | 
| 141 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 142 | 
         
            +
                cpu: [arm64]
         
     | 
| 143 | 
         
            +
                os: [darwin]
         
     | 
| 144 | 
         
            +
                requiresBuild: true
         
     | 
| 145 | 
         
            +
                dev: true
         
     | 
| 146 | 
         
            +
                optional: true
         
     | 
| 147 | 
         
            +
             
     | 
| 148 | 
         
            +
              /@esbuild/darwin-x64@0.19.10:
         
     | 
| 149 | 
         
            +
                resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
         
     | 
| 150 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 151 | 
         
            +
                cpu: [x64]
         
     | 
| 152 | 
         
            +
                os: [darwin]
         
     | 
| 153 | 
         
            +
                requiresBuild: true
         
     | 
| 154 | 
         
            +
                dev: true
         
     | 
| 155 | 
         
            +
                optional: true
         
     | 
| 156 | 
         
            +
             
     | 
| 157 | 
         
            +
              /@esbuild/freebsd-arm64@0.19.10:
         
     | 
| 158 | 
         
            +
                resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
         
     | 
| 159 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 160 | 
         
            +
                cpu: [arm64]
         
     | 
| 161 | 
         
            +
                os: [freebsd]
         
     | 
| 162 | 
         
            +
                requiresBuild: true
         
     | 
| 163 | 
         
            +
                dev: true
         
     | 
| 164 | 
         
            +
                optional: true
         
     | 
| 165 | 
         
            +
             
     | 
| 166 | 
         
            +
              /@esbuild/freebsd-x64@0.19.10:
         
     | 
| 167 | 
         
            +
                resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
         
     | 
| 168 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 169 | 
         
            +
                cpu: [x64]
         
     | 
| 170 | 
         
            +
                os: [freebsd]
         
     | 
| 171 | 
         
            +
                requiresBuild: true
         
     | 
| 172 | 
         
            +
                dev: true
         
     | 
| 173 | 
         
            +
                optional: true
         
     | 
| 174 | 
         
            +
             
     | 
| 175 | 
         
            +
              /@esbuild/linux-arm64@0.19.10:
         
     | 
| 176 | 
         
            +
                resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
         
     | 
| 177 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 178 | 
         
            +
                cpu: [arm64]
         
     | 
| 179 | 
         
            +
                os: [linux]
         
     | 
| 180 | 
         
            +
                requiresBuild: true
         
     | 
| 181 | 
         
            +
                dev: true
         
     | 
| 182 | 
         
            +
                optional: true
         
     | 
| 183 | 
         
            +
             
     | 
| 184 | 
         
            +
              /@esbuild/linux-arm@0.19.10:
         
     | 
| 185 | 
         
            +
                resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
         
     | 
| 186 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 187 | 
         
            +
                cpu: [arm]
         
     | 
| 188 | 
         
            +
                os: [linux]
         
     | 
| 189 | 
         
            +
                requiresBuild: true
         
     | 
| 190 | 
         
            +
                dev: true
         
     | 
| 191 | 
         
            +
                optional: true
         
     | 
| 192 | 
         
            +
             
     | 
| 193 | 
         
            +
              /@esbuild/linux-ia32@0.19.10:
         
     | 
| 194 | 
         
            +
                resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
         
     | 
| 195 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 196 | 
         
            +
                cpu: [ia32]
         
     | 
| 197 | 
         
            +
                os: [linux]
         
     | 
| 198 | 
         
            +
                requiresBuild: true
         
     | 
| 199 | 
         
            +
                dev: true
         
     | 
| 200 | 
         
            +
                optional: true
         
     | 
| 201 | 
         
            +
             
     | 
| 202 | 
         
            +
              /@esbuild/linux-loong64@0.19.10:
         
     | 
| 203 | 
         
            +
                resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
         
     | 
| 204 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 205 | 
         
            +
                cpu: [loong64]
         
     | 
| 206 | 
         
            +
                os: [linux]
         
     | 
| 207 | 
         
            +
                requiresBuild: true
         
     | 
| 208 | 
         
            +
                dev: true
         
     | 
| 209 | 
         
            +
                optional: true
         
     | 
| 210 | 
         
            +
             
     | 
| 211 | 
         
            +
              /@esbuild/linux-mips64el@0.19.10:
         
     | 
| 212 | 
         
            +
                resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
         
     | 
| 213 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 214 | 
         
            +
                cpu: [mips64el]
         
     | 
| 215 | 
         
            +
                os: [linux]
         
     | 
| 216 | 
         
            +
                requiresBuild: true
         
     | 
| 217 | 
         
            +
                dev: true
         
     | 
| 218 | 
         
            +
                optional: true
         
     | 
| 219 | 
         
            +
             
     | 
| 220 | 
         
            +
              /@esbuild/linux-ppc64@0.19.10:
         
     | 
| 221 | 
         
            +
                resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
         
     | 
| 222 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 223 | 
         
            +
                cpu: [ppc64]
         
     | 
| 224 | 
         
            +
                os: [linux]
         
     | 
| 225 | 
         
            +
                requiresBuild: true
         
     | 
| 226 | 
         
            +
                dev: true
         
     | 
| 227 | 
         
            +
                optional: true
         
     | 
| 228 | 
         
            +
             
     | 
| 229 | 
         
            +
              /@esbuild/linux-riscv64@0.19.10:
         
     | 
| 230 | 
         
            +
                resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
         
     | 
| 231 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 232 | 
         
            +
                cpu: [riscv64]
         
     | 
| 233 | 
         
            +
                os: [linux]
         
     | 
| 234 | 
         
            +
                requiresBuild: true
         
     | 
| 235 | 
         
            +
                dev: true
         
     | 
| 236 | 
         
            +
                optional: true
         
     | 
| 237 | 
         
            +
             
     | 
| 238 | 
         
            +
              /@esbuild/linux-s390x@0.19.10:
         
     | 
| 239 | 
         
            +
                resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
         
     | 
| 240 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 241 | 
         
            +
                cpu: [s390x]
         
     | 
| 242 | 
         
            +
                os: [linux]
         
     | 
| 243 | 
         
            +
                requiresBuild: true
         
     | 
| 244 | 
         
            +
                dev: true
         
     | 
| 245 | 
         
            +
                optional: true
         
     | 
| 246 | 
         
            +
             
     | 
| 247 | 
         
            +
              /@esbuild/linux-x64@0.19.10:
         
     | 
| 248 | 
         
            +
                resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
         
     | 
| 249 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 250 | 
         
            +
                cpu: [x64]
         
     | 
| 251 | 
         
            +
                os: [linux]
         
     | 
| 252 | 
         
            +
                requiresBuild: true
         
     | 
| 253 | 
         
            +
                dev: true
         
     | 
| 254 | 
         
            +
                optional: true
         
     | 
| 255 | 
         
            +
             
     | 
| 256 | 
         
            +
              /@esbuild/netbsd-x64@0.19.10:
         
     | 
| 257 | 
         
            +
                resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
         
     | 
| 258 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 259 | 
         
            +
                cpu: [x64]
         
     | 
| 260 | 
         
            +
                os: [netbsd]
         
     | 
| 261 | 
         
            +
                requiresBuild: true
         
     | 
| 262 | 
         
            +
                dev: true
         
     | 
| 263 | 
         
            +
                optional: true
         
     | 
| 264 | 
         
            +
             
     | 
| 265 | 
         
            +
              /@esbuild/openbsd-x64@0.19.10:
         
     | 
| 266 | 
         
            +
                resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
         
     | 
| 267 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 268 | 
         
            +
                cpu: [x64]
         
     | 
| 269 | 
         
            +
                os: [openbsd]
         
     | 
| 270 | 
         
            +
                requiresBuild: true
         
     | 
| 271 | 
         
            +
                dev: true
         
     | 
| 272 | 
         
            +
                optional: true
         
     | 
| 273 | 
         
            +
             
     | 
| 274 | 
         
            +
              /@esbuild/sunos-x64@0.19.10:
         
     | 
| 275 | 
         
            +
                resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
         
     | 
| 276 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 277 | 
         
            +
                cpu: [x64]
         
     | 
| 278 | 
         
            +
                os: [sunos]
         
     | 
| 279 | 
         
            +
                requiresBuild: true
         
     | 
| 280 | 
         
            +
                dev: true
         
     | 
| 281 | 
         
            +
                optional: true
         
     | 
| 282 | 
         
            +
             
     | 
| 283 | 
         
            +
              /@esbuild/win32-arm64@0.19.10:
         
     | 
| 284 | 
         
            +
                resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
         
     | 
| 285 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 286 | 
         
            +
                cpu: [arm64]
         
     | 
| 287 | 
         
            +
                os: [win32]
         
     | 
| 288 | 
         
            +
                requiresBuild: true
         
     | 
| 289 | 
         
            +
                dev: true
         
     | 
| 290 | 
         
            +
                optional: true
         
     | 
| 291 | 
         
            +
             
     | 
| 292 | 
         
            +
              /@esbuild/win32-ia32@0.19.10:
         
     | 
| 293 | 
         
            +
                resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
         
     | 
| 294 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 295 | 
         
            +
                cpu: [ia32]
         
     | 
| 296 | 
         
            +
                os: [win32]
         
     | 
| 297 | 
         
            +
                requiresBuild: true
         
     | 
| 298 | 
         
            +
                dev: true
         
     | 
| 299 | 
         
            +
                optional: true
         
     | 
| 300 | 
         
            +
             
     | 
| 301 | 
         
            +
              /@esbuild/win32-x64@0.19.10:
         
     | 
| 302 | 
         
            +
                resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
         
     | 
| 303 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 304 | 
         
            +
                cpu: [x64]
         
     | 
| 305 | 
         
            +
                os: [win32]
         
     | 
| 306 | 
         
            +
                requiresBuild: true
         
     | 
| 307 | 
         
            +
                dev: true
         
     | 
| 308 | 
         
            +
                optional: true
         
     | 
| 309 | 
         
            +
             
     | 
| 310 | 
         
            +
              /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
         
     | 
| 311 | 
         
            +
                resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
         
     | 
| 312 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 313 | 
         
            +
                peerDependencies:
         
     | 
| 314 | 
         
            +
                  eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
         
     | 
| 315 | 
         
            +
                dependencies:
         
     | 
| 316 | 
         
            +
                  eslint: 8.56.0
         
     | 
| 317 | 
         
            +
                  eslint-visitor-keys: 3.4.3
         
     | 
| 318 | 
         
            +
                dev: true
         
     | 
| 319 | 
         
            +
             
     | 
| 320 | 
         
            +
              /@eslint-community/regexpp@4.10.0:
         
     | 
| 321 | 
         
            +
                resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
         
     | 
| 322 | 
         
            +
                engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
         
     | 
| 323 | 
         
            +
                dev: true
         
     | 
| 324 | 
         
            +
             
     | 
| 325 | 
         
            +
              /@eslint/eslintrc@2.1.4:
         
     | 
| 326 | 
         
            +
                resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
         
     | 
| 327 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 328 | 
         
            +
                dependencies:
         
     | 
| 329 | 
         
            +
                  ajv: 6.12.6
         
     | 
| 330 | 
         
            +
                  debug: 4.3.4
         
     | 
| 331 | 
         
            +
                  espree: 9.6.1
         
     | 
| 332 | 
         
            +
                  globals: 13.24.0
         
     | 
| 333 | 
         
            +
                  ignore: 5.3.0
         
     | 
| 334 | 
         
            +
                  import-fresh: 3.3.0
         
     | 
| 335 | 
         
            +
                  js-yaml: 4.1.0
         
     | 
| 336 | 
         
            +
                  minimatch: 3.1.2
         
     | 
| 337 | 
         
            +
                  strip-json-comments: 3.1.1
         
     | 
| 338 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 339 | 
         
            +
                  - supports-color
         
     | 
| 340 | 
         
            +
                dev: true
         
     | 
| 341 | 
         
            +
             
     | 
| 342 | 
         
            +
              /@eslint/js@8.56.0:
         
     | 
| 343 | 
         
            +
                resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
         
     | 
| 344 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 345 | 
         
            +
                dev: true
         
     | 
| 346 | 
         
            +
             
     | 
| 347 | 
         
            +
              /@geoman-io/leaflet-geoman-free@2.15.0(leaflet@1.9.4):
         
     | 
| 348 | 
         
            +
                resolution: {integrity: sha512-esann1pQ8cCX3pMR7XkXuf1vwwJLz1mAbkeyRWOfoLMKA8LBnbRxChIBZzzwzyGIxybNO93Bl6LaK8wEj8uzlA==}
         
     | 
| 349 | 
         
            +
                peerDependencies:
         
     | 
| 350 | 
         
            +
                  leaflet: ^1.2.0
         
     | 
| 351 | 
         
            +
                dependencies:
         
     | 
| 352 | 
         
            +
                  '@turf/boolean-contains': 6.5.0
         
     | 
| 353 | 
         
            +
                  '@turf/kinks': 6.5.0
         
     | 
| 354 | 
         
            +
                  '@turf/line-intersect': 6.5.0
         
     | 
| 355 | 
         
            +
                  '@turf/line-split': 6.5.0
         
     | 
| 356 | 
         
            +
                  leaflet: 1.9.4
         
     | 
| 357 | 
         
            +
                  lodash: 4.17.21
         
     | 
| 358 | 
         
            +
                  polygon-clipping: 0.15.3
         
     | 
| 359 | 
         
            +
                dev: false
         
     | 
| 360 | 
         
            +
             
     | 
| 361 | 
         
            +
              /@headlessui/vue@1.7.16(vue@3.3.13):
         
     | 
| 362 | 
         
            +
                resolution: {integrity: sha512-nKT+nf/q6x198SsyK54mSszaQl/z+QxtASmgMEJtpxSX2Q0OPJX0upS/9daDyiECpeAsvjkoOrm2O/6PyBQ+Qg==}
         
     | 
| 363 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 364 | 
         
            +
                peerDependencies:
         
     | 
| 365 | 
         
            +
                  vue: ^3.2.0
         
     | 
| 366 | 
         
            +
                dependencies:
         
     | 
| 367 | 
         
            +
                  vue: 3.3.13
         
     | 
| 368 | 
         
            +
                dev: true
         
     | 
| 369 | 
         
            +
             
     | 
| 370 | 
         
            +
              /@heroicons/vue@2.1.1(vue@3.3.13):
         
     | 
| 371 | 
         
            +
                resolution: {integrity: sha512-Yi5nh/89L193ALgHyJUQUdNLsKXPrrE3yj5yiR8WAlo7nZyXGxGauQcEAmBsa2XJGMhBMuEdoOiuZ8wEwTBxVQ==}
         
     | 
| 372 | 
         
            +
                peerDependencies:
         
     | 
| 373 | 
         
            +
                  vue: '>= 3'
         
     | 
| 374 | 
         
            +
                dependencies:
         
     | 
| 375 | 
         
            +
                  vue: 3.3.13
         
     | 
| 376 | 
         
            +
                dev: true
         
     | 
| 377 | 
         
            +
             
     | 
| 378 | 
         
            +
              /@humanwhocodes/config-array@0.11.13:
         
     | 
| 379 | 
         
            +
                resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
         
     | 
| 380 | 
         
            +
                engines: {node: '>=10.10.0'}
         
     | 
| 381 | 
         
            +
                dependencies:
         
     | 
| 382 | 
         
            +
                  '@humanwhocodes/object-schema': 2.0.1
         
     | 
| 383 | 
         
            +
                  debug: 4.3.4
         
     | 
| 384 | 
         
            +
                  minimatch: 3.1.2
         
     | 
| 385 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 386 | 
         
            +
                  - supports-color
         
     | 
| 387 | 
         
            +
                dev: true
         
     | 
| 388 | 
         
            +
             
     | 
| 389 | 
         
            +
              /@humanwhocodes/module-importer@1.0.1:
         
     | 
| 390 | 
         
            +
                resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
         
     | 
| 391 | 
         
            +
                engines: {node: '>=12.22'}
         
     | 
| 392 | 
         
            +
                dev: true
         
     | 
| 393 | 
         
            +
             
     | 
| 394 | 
         
            +
              /@humanwhocodes/object-schema@2.0.1:
         
     | 
| 395 | 
         
            +
                resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
         
     | 
| 396 | 
         
            +
                dev: true
         
     | 
| 397 | 
         
            +
             
     | 
| 398 | 
         
            +
              /@jridgewell/gen-mapping@0.3.3:
         
     | 
| 399 | 
         
            +
                resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
         
     | 
| 400 | 
         
            +
                engines: {node: '>=6.0.0'}
         
     | 
| 401 | 
         
            +
                dependencies:
         
     | 
| 402 | 
         
            +
                  '@jridgewell/set-array': 1.1.2
         
     | 
| 403 | 
         
            +
                  '@jridgewell/sourcemap-codec': 1.4.15
         
     | 
| 404 | 
         
            +
                  '@jridgewell/trace-mapping': 0.3.20
         
     | 
| 405 | 
         
            +
                dev: true
         
     | 
| 406 | 
         
            +
             
     | 
| 407 | 
         
            +
              /@jridgewell/resolve-uri@3.1.1:
         
     | 
| 408 | 
         
            +
                resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
         
     | 
| 409 | 
         
            +
                engines: {node: '>=6.0.0'}
         
     | 
| 410 | 
         
            +
                dev: true
         
     | 
| 411 | 
         
            +
             
     | 
| 412 | 
         
            +
              /@jridgewell/set-array@1.1.2:
         
     | 
| 413 | 
         
            +
                resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
         
     | 
| 414 | 
         
            +
                engines: {node: '>=6.0.0'}
         
     | 
| 415 | 
         
            +
                dev: true
         
     | 
| 416 | 
         
            +
             
     | 
| 417 | 
         
            +
              /@jridgewell/sourcemap-codec@1.4.15:
         
     | 
| 418 | 
         
            +
                resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
         
     | 
| 419 | 
         
            +
             
     | 
| 420 | 
         
            +
              /@jridgewell/trace-mapping@0.3.20:
         
     | 
| 421 | 
         
            +
                resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
         
     | 
| 422 | 
         
            +
                dependencies:
         
     | 
| 423 | 
         
            +
                  '@jridgewell/resolve-uri': 3.1.1
         
     | 
| 424 | 
         
            +
                  '@jridgewell/sourcemap-codec': 1.4.15
         
     | 
| 425 | 
         
            +
                dev: true
         
     | 
| 426 | 
         
            +
             
     | 
| 427 | 
         
            +
              /@nodelib/fs.scandir@2.1.5:
         
     | 
| 428 | 
         
            +
                resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
         
     | 
| 429 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 430 | 
         
            +
                dependencies:
         
     | 
| 431 | 
         
            +
                  '@nodelib/fs.stat': 2.0.5
         
     | 
| 432 | 
         
            +
                  run-parallel: 1.2.0
         
     | 
| 433 | 
         
            +
                dev: true
         
     | 
| 434 | 
         
            +
             
     | 
| 435 | 
         
            +
              /@nodelib/fs.stat@2.0.5:
         
     | 
| 436 | 
         
            +
                resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
         
     | 
| 437 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 438 | 
         
            +
                dev: true
         
     | 
| 439 | 
         
            +
             
     | 
| 440 | 
         
            +
              /@nodelib/fs.walk@1.2.8:
         
     | 
| 441 | 
         
            +
                resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
         
     | 
| 442 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 443 | 
         
            +
                dependencies:
         
     | 
| 444 | 
         
            +
                  '@nodelib/fs.scandir': 2.1.5
         
     | 
| 445 | 
         
            +
                  fastq: 1.16.0
         
     | 
| 446 | 
         
            +
                dev: true
         
     | 
| 447 | 
         
            +
             
     | 
| 448 | 
         
            +
              /@rollup/rollup-android-arm-eabi@4.9.1:
         
     | 
| 449 | 
         
            +
                resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
         
     | 
| 450 | 
         
            +
                cpu: [arm]
         
     | 
| 451 | 
         
            +
                os: [android]
         
     | 
| 452 | 
         
            +
                requiresBuild: true
         
     | 
| 453 | 
         
            +
                dev: true
         
     | 
| 454 | 
         
            +
                optional: true
         
     | 
| 455 | 
         
            +
             
     | 
| 456 | 
         
            +
              /@rollup/rollup-android-arm64@4.9.1:
         
     | 
| 457 | 
         
            +
                resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
         
     | 
| 458 | 
         
            +
                cpu: [arm64]
         
     | 
| 459 | 
         
            +
                os: [android]
         
     | 
| 460 | 
         
            +
                requiresBuild: true
         
     | 
| 461 | 
         
            +
                dev: true
         
     | 
| 462 | 
         
            +
                optional: true
         
     | 
| 463 | 
         
            +
             
     | 
| 464 | 
         
            +
              /@rollup/rollup-darwin-arm64@4.9.1:
         
     | 
| 465 | 
         
            +
                resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
         
     | 
| 466 | 
         
            +
                cpu: [arm64]
         
     | 
| 467 | 
         
            +
                os: [darwin]
         
     | 
| 468 | 
         
            +
                requiresBuild: true
         
     | 
| 469 | 
         
            +
                dev: true
         
     | 
| 470 | 
         
            +
                optional: true
         
     | 
| 471 | 
         
            +
             
     | 
| 472 | 
         
            +
              /@rollup/rollup-darwin-x64@4.9.1:
         
     | 
| 473 | 
         
            +
                resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
         
     | 
| 474 | 
         
            +
                cpu: [x64]
         
     | 
| 475 | 
         
            +
                os: [darwin]
         
     | 
| 476 | 
         
            +
                requiresBuild: true
         
     | 
| 477 | 
         
            +
                dev: true
         
     | 
| 478 | 
         
            +
                optional: true
         
     | 
| 479 | 
         
            +
             
     | 
| 480 | 
         
            +
              /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
         
     | 
| 481 | 
         
            +
                resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
         
     | 
| 482 | 
         
            +
                cpu: [arm]
         
     | 
| 483 | 
         
            +
                os: [linux]
         
     | 
| 484 | 
         
            +
                requiresBuild: true
         
     | 
| 485 | 
         
            +
                dev: true
         
     | 
| 486 | 
         
            +
                optional: true
         
     | 
| 487 | 
         
            +
             
     | 
| 488 | 
         
            +
              /@rollup/rollup-linux-arm64-gnu@4.9.1:
         
     | 
| 489 | 
         
            +
                resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
         
     | 
| 490 | 
         
            +
                cpu: [arm64]
         
     | 
| 491 | 
         
            +
                os: [linux]
         
     | 
| 492 | 
         
            +
                requiresBuild: true
         
     | 
| 493 | 
         
            +
                dev: true
         
     | 
| 494 | 
         
            +
                optional: true
         
     | 
| 495 | 
         
            +
             
     | 
| 496 | 
         
            +
              /@rollup/rollup-linux-arm64-musl@4.9.1:
         
     | 
| 497 | 
         
            +
                resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
         
     | 
| 498 | 
         
            +
                cpu: [arm64]
         
     | 
| 499 | 
         
            +
                os: [linux]
         
     | 
| 500 | 
         
            +
                requiresBuild: true
         
     | 
| 501 | 
         
            +
                dev: true
         
     | 
| 502 | 
         
            +
                optional: true
         
     | 
| 503 | 
         
            +
             
     | 
| 504 | 
         
            +
              /@rollup/rollup-linux-riscv64-gnu@4.9.1:
         
     | 
| 505 | 
         
            +
                resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
         
     | 
| 506 | 
         
            +
                cpu: [riscv64]
         
     | 
| 507 | 
         
            +
                os: [linux]
         
     | 
| 508 | 
         
            +
                requiresBuild: true
         
     | 
| 509 | 
         
            +
                dev: true
         
     | 
| 510 | 
         
            +
                optional: true
         
     | 
| 511 | 
         
            +
             
     | 
| 512 | 
         
            +
              /@rollup/rollup-linux-x64-gnu@4.9.1:
         
     | 
| 513 | 
         
            +
                resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
         
     | 
| 514 | 
         
            +
                cpu: [x64]
         
     | 
| 515 | 
         
            +
                os: [linux]
         
     | 
| 516 | 
         
            +
                requiresBuild: true
         
     | 
| 517 | 
         
            +
                dev: true
         
     | 
| 518 | 
         
            +
                optional: true
         
     | 
| 519 | 
         
            +
             
     | 
| 520 | 
         
            +
              /@rollup/rollup-linux-x64-musl@4.9.1:
         
     | 
| 521 | 
         
            +
                resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
         
     | 
| 522 | 
         
            +
                cpu: [x64]
         
     | 
| 523 | 
         
            +
                os: [linux]
         
     | 
| 524 | 
         
            +
                requiresBuild: true
         
     | 
| 525 | 
         
            +
                dev: true
         
     | 
| 526 | 
         
            +
                optional: true
         
     | 
| 527 | 
         
            +
             
     | 
| 528 | 
         
            +
              /@rollup/rollup-win32-arm64-msvc@4.9.1:
         
     | 
| 529 | 
         
            +
                resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
         
     | 
| 530 | 
         
            +
                cpu: [arm64]
         
     | 
| 531 | 
         
            +
                os: [win32]
         
     | 
| 532 | 
         
            +
                requiresBuild: true
         
     | 
| 533 | 
         
            +
                dev: true
         
     | 
| 534 | 
         
            +
                optional: true
         
     | 
| 535 | 
         
            +
             
     | 
| 536 | 
         
            +
              /@rollup/rollup-win32-ia32-msvc@4.9.1:
         
     | 
| 537 | 
         
            +
                resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
         
     | 
| 538 | 
         
            +
                cpu: [ia32]
         
     | 
| 539 | 
         
            +
                os: [win32]
         
     | 
| 540 | 
         
            +
                requiresBuild: true
         
     | 
| 541 | 
         
            +
                dev: true
         
     | 
| 542 | 
         
            +
                optional: true
         
     | 
| 543 | 
         
            +
             
     | 
| 544 | 
         
            +
              /@rollup/rollup-win32-x64-msvc@4.9.1:
         
     | 
| 545 | 
         
            +
                resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
         
     | 
| 546 | 
         
            +
                cpu: [x64]
         
     | 
| 547 | 
         
            +
                os: [win32]
         
     | 
| 548 | 
         
            +
                requiresBuild: true
         
     | 
| 549 | 
         
            +
                dev: true
         
     | 
| 550 | 
         
            +
                optional: true
         
     | 
| 551 | 
         
            +
             
     | 
| 552 | 
         
            +
              /@tsconfig/node20@20.1.2:
         
     | 
| 553 | 
         
            +
                resolution: {integrity: sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==}
         
     | 
| 554 | 
         
            +
                dev: true
         
     | 
| 555 | 
         
            +
             
     | 
| 556 | 
         
            +
              /@turf/bbox@6.5.0:
         
     | 
| 557 | 
         
            +
                resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==}
         
     | 
| 558 | 
         
            +
                dependencies:
         
     | 
| 559 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 560 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 561 | 
         
            +
                dev: false
         
     | 
| 562 | 
         
            +
             
     | 
| 563 | 
         
            +
              /@turf/bearing@6.5.0:
         
     | 
| 564 | 
         
            +
                resolution: {integrity: sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==}
         
     | 
| 565 | 
         
            +
                dependencies:
         
     | 
| 566 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 567 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 568 | 
         
            +
                dev: false
         
     | 
| 569 | 
         
            +
             
     | 
| 570 | 
         
            +
              /@turf/boolean-contains@6.5.0:
         
     | 
| 571 | 
         
            +
                resolution: {integrity: sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==}
         
     | 
| 572 | 
         
            +
                dependencies:
         
     | 
| 573 | 
         
            +
                  '@turf/bbox': 6.5.0
         
     | 
| 574 | 
         
            +
                  '@turf/boolean-point-in-polygon': 6.5.0
         
     | 
| 575 | 
         
            +
                  '@turf/boolean-point-on-line': 6.5.0
         
     | 
| 576 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 577 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 578 | 
         
            +
                dev: false
         
     | 
| 579 | 
         
            +
             
     | 
| 580 | 
         
            +
              /@turf/boolean-point-in-polygon@6.5.0:
         
     | 
| 581 | 
         
            +
                resolution: {integrity: sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==}
         
     | 
| 582 | 
         
            +
                dependencies:
         
     | 
| 583 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 584 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 585 | 
         
            +
                dev: false
         
     | 
| 586 | 
         
            +
             
     | 
| 587 | 
         
            +
              /@turf/boolean-point-on-line@6.5.0:
         
     | 
| 588 | 
         
            +
                resolution: {integrity: sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==}
         
     | 
| 589 | 
         
            +
                dependencies:
         
     | 
| 590 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 591 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 592 | 
         
            +
                dev: false
         
     | 
| 593 | 
         
            +
             
     | 
| 594 | 
         
            +
              /@turf/destination@6.5.0:
         
     | 
| 595 | 
         
            +
                resolution: {integrity: sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==}
         
     | 
| 596 | 
         
            +
                dependencies:
         
     | 
| 597 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 598 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 599 | 
         
            +
                dev: false
         
     | 
| 600 | 
         
            +
             
     | 
| 601 | 
         
            +
              /@turf/distance@6.5.0:
         
     | 
| 602 | 
         
            +
                resolution: {integrity: sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==}
         
     | 
| 603 | 
         
            +
                dependencies:
         
     | 
| 604 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 605 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 606 | 
         
            +
                dev: false
         
     | 
| 607 | 
         
            +
             
     | 
| 608 | 
         
            +
              /@turf/helpers@6.5.0:
         
     | 
| 609 | 
         
            +
                resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==}
         
     | 
| 610 | 
         
            +
                dev: false
         
     | 
| 611 | 
         
            +
             
     | 
| 612 | 
         
            +
              /@turf/invariant@6.5.0:
         
     | 
| 613 | 
         
            +
                resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==}
         
     | 
| 614 | 
         
            +
                dependencies:
         
     | 
| 615 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 616 | 
         
            +
                dev: false
         
     | 
| 617 | 
         
            +
             
     | 
| 618 | 
         
            +
              /@turf/kinks@6.5.0:
         
     | 
| 619 | 
         
            +
                resolution: {integrity: sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==}
         
     | 
| 620 | 
         
            +
                dependencies:
         
     | 
| 621 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 622 | 
         
            +
                dev: false
         
     | 
| 623 | 
         
            +
             
     | 
| 624 | 
         
            +
              /@turf/line-intersect@6.5.0:
         
     | 
| 625 | 
         
            +
                resolution: {integrity: sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==}
         
     | 
| 626 | 
         
            +
                dependencies:
         
     | 
| 627 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 628 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 629 | 
         
            +
                  '@turf/line-segment': 6.5.0
         
     | 
| 630 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 631 | 
         
            +
                  geojson-rbush: 3.2.0
         
     | 
| 632 | 
         
            +
                dev: false
         
     | 
| 633 | 
         
            +
             
     | 
| 634 | 
         
            +
              /@turf/line-segment@6.5.0:
         
     | 
| 635 | 
         
            +
                resolution: {integrity: sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==}
         
     | 
| 636 | 
         
            +
                dependencies:
         
     | 
| 637 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 638 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 639 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 640 | 
         
            +
                dev: false
         
     | 
| 641 | 
         
            +
             
     | 
| 642 | 
         
            +
              /@turf/line-split@6.5.0:
         
     | 
| 643 | 
         
            +
                resolution: {integrity: sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==}
         
     | 
| 644 | 
         
            +
                dependencies:
         
     | 
| 645 | 
         
            +
                  '@turf/bbox': 6.5.0
         
     | 
| 646 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 647 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 648 | 
         
            +
                  '@turf/line-intersect': 6.5.0
         
     | 
| 649 | 
         
            +
                  '@turf/line-segment': 6.5.0
         
     | 
| 650 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 651 | 
         
            +
                  '@turf/nearest-point-on-line': 6.5.0
         
     | 
| 652 | 
         
            +
                  '@turf/square': 6.5.0
         
     | 
| 653 | 
         
            +
                  '@turf/truncate': 6.5.0
         
     | 
| 654 | 
         
            +
                  geojson-rbush: 3.2.0
         
     | 
| 655 | 
         
            +
                dev: false
         
     | 
| 656 | 
         
            +
             
     | 
| 657 | 
         
            +
              /@turf/meta@6.5.0:
         
     | 
| 658 | 
         
            +
                resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==}
         
     | 
| 659 | 
         
            +
                dependencies:
         
     | 
| 660 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 661 | 
         
            +
                dev: false
         
     | 
| 662 | 
         
            +
             
     | 
| 663 | 
         
            +
              /@turf/nearest-point-on-line@6.5.0:
         
     | 
| 664 | 
         
            +
                resolution: {integrity: sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==}
         
     | 
| 665 | 
         
            +
                dependencies:
         
     | 
| 666 | 
         
            +
                  '@turf/bearing': 6.5.0
         
     | 
| 667 | 
         
            +
                  '@turf/destination': 6.5.0
         
     | 
| 668 | 
         
            +
                  '@turf/distance': 6.5.0
         
     | 
| 669 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 670 | 
         
            +
                  '@turf/invariant': 6.5.0
         
     | 
| 671 | 
         
            +
                  '@turf/line-intersect': 6.5.0
         
     | 
| 672 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 673 | 
         
            +
                dev: false
         
     | 
| 674 | 
         
            +
             
     | 
| 675 | 
         
            +
              /@turf/square@6.5.0:
         
     | 
| 676 | 
         
            +
                resolution: {integrity: sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==}
         
     | 
| 677 | 
         
            +
                dependencies:
         
     | 
| 678 | 
         
            +
                  '@turf/distance': 6.5.0
         
     | 
| 679 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 680 | 
         
            +
                dev: false
         
     | 
| 681 | 
         
            +
             
     | 
| 682 | 
         
            +
              /@turf/truncate@6.5.0:
         
     | 
| 683 | 
         
            +
                resolution: {integrity: sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==}
         
     | 
| 684 | 
         
            +
                dependencies:
         
     | 
| 685 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 686 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 687 | 
         
            +
                dev: false
         
     | 
| 688 | 
         
            +
             
     | 
| 689 | 
         
            +
              /@types/geojson@7946.0.13:
         
     | 
| 690 | 
         
            +
                resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==}
         
     | 
| 691 | 
         
            +
                dev: true
         
     | 
| 692 | 
         
            +
             
     | 
| 693 | 
         
            +
              /@types/geojson@7946.0.8:
         
     | 
| 694 | 
         
            +
                resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==}
         
     | 
| 695 | 
         
            +
                dev: false
         
     | 
| 696 | 
         
            +
             
     | 
| 697 | 
         
            +
              /@types/leaflet@1.9.8:
         
     | 
| 698 | 
         
            +
                resolution: {integrity: sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==}
         
     | 
| 699 | 
         
            +
                dependencies:
         
     | 
| 700 | 
         
            +
                  '@types/geojson': 7946.0.13
         
     | 
| 701 | 
         
            +
                dev: true
         
     | 
| 702 | 
         
            +
             
     | 
| 703 | 
         
            +
              /@types/node@20.10.5:
         
     | 
| 704 | 
         
            +
                resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
         
     | 
| 705 | 
         
            +
                dependencies:
         
     | 
| 706 | 
         
            +
                  undici-types: 5.26.5
         
     | 
| 707 | 
         
            +
                dev: true
         
     | 
| 708 | 
         
            +
             
     | 
| 709 | 
         
            +
              /@ungap/structured-clone@1.2.0:
         
     | 
| 710 | 
         
            +
                resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
         
     | 
| 711 | 
         
            +
                dev: true
         
     | 
| 712 | 
         
            +
             
     | 
| 713 | 
         
            +
              /@vitejs/plugin-vue@4.5.2(vite@5.0.10)(vue@3.3.13):
         
     | 
| 714 | 
         
            +
                resolution: {integrity: sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ==}
         
     | 
| 715 | 
         
            +
                engines: {node: ^14.18.0 || >=16.0.0}
         
     | 
| 716 | 
         
            +
                peerDependencies:
         
     | 
| 717 | 
         
            +
                  vite: ^4.0.0 || ^5.0.0
         
     | 
| 718 | 
         
            +
                  vue: ^3.2.25
         
     | 
| 719 | 
         
            +
                dependencies:
         
     | 
| 720 | 
         
            +
                  vite: 5.0.10(@types/node@20.10.5)
         
     | 
| 721 | 
         
            +
                  vue: 3.3.13
         
     | 
| 722 | 
         
            +
                dev: true
         
     | 
| 723 | 
         
            +
             
     | 
| 724 | 
         
            +
              /@vue/compiler-core@3.3.13:
         
     | 
| 725 | 
         
            +
                resolution: {integrity: sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==}
         
     | 
| 726 | 
         
            +
                dependencies:
         
     | 
| 727 | 
         
            +
                  '@babel/parser': 7.23.6
         
     | 
| 728 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 729 | 
         
            +
                  estree-walker: 2.0.2
         
     | 
| 730 | 
         
            +
                  source-map-js: 1.0.2
         
     | 
| 731 | 
         
            +
             
     | 
| 732 | 
         
            +
              /@vue/compiler-dom@3.3.13:
         
     | 
| 733 | 
         
            +
                resolution: {integrity: sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==}
         
     | 
| 734 | 
         
            +
                dependencies:
         
     | 
| 735 | 
         
            +
                  '@vue/compiler-core': 3.3.13
         
     | 
| 736 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 737 | 
         
            +
             
     | 
| 738 | 
         
            +
              /@vue/compiler-sfc@3.3.13:
         
     | 
| 739 | 
         
            +
                resolution: {integrity: sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==}
         
     | 
| 740 | 
         
            +
                dependencies:
         
     | 
| 741 | 
         
            +
                  '@babel/parser': 7.23.6
         
     | 
| 742 | 
         
            +
                  '@vue/compiler-core': 3.3.13
         
     | 
| 743 | 
         
            +
                  '@vue/compiler-dom': 3.3.13
         
     | 
| 744 | 
         
            +
                  '@vue/compiler-ssr': 3.3.13
         
     | 
| 745 | 
         
            +
                  '@vue/reactivity-transform': 3.3.13
         
     | 
| 746 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 747 | 
         
            +
                  estree-walker: 2.0.2
         
     | 
| 748 | 
         
            +
                  magic-string: 0.30.5
         
     | 
| 749 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 750 | 
         
            +
                  source-map-js: 1.0.2
         
     | 
| 751 | 
         
            +
             
     | 
| 752 | 
         
            +
              /@vue/compiler-ssr@3.3.13:
         
     | 
| 753 | 
         
            +
                resolution: {integrity: sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==}
         
     | 
| 754 | 
         
            +
                dependencies:
         
     | 
| 755 | 
         
            +
                  '@vue/compiler-dom': 3.3.13
         
     | 
| 756 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 757 | 
         
            +
             
     | 
| 758 | 
         
            +
              /@vue/reactivity-transform@3.3.13:
         
     | 
| 759 | 
         
            +
                resolution: {integrity: sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==}
         
     | 
| 760 | 
         
            +
                dependencies:
         
     | 
| 761 | 
         
            +
                  '@babel/parser': 7.23.6
         
     | 
| 762 | 
         
            +
                  '@vue/compiler-core': 3.3.13
         
     | 
| 763 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 764 | 
         
            +
                  estree-walker: 2.0.2
         
     | 
| 765 | 
         
            +
                  magic-string: 0.30.5
         
     | 
| 766 | 
         
            +
             
     | 
| 767 | 
         
            +
              /@vue/reactivity@3.3.13:
         
     | 
| 768 | 
         
            +
                resolution: {integrity: sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==}
         
     | 
| 769 | 
         
            +
                dependencies:
         
     | 
| 770 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 771 | 
         
            +
             
     | 
| 772 | 
         
            +
              /@vue/runtime-core@3.3.13:
         
     | 
| 773 | 
         
            +
                resolution: {integrity: sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==}
         
     | 
| 774 | 
         
            +
                dependencies:
         
     | 
| 775 | 
         
            +
                  '@vue/reactivity': 3.3.13
         
     | 
| 776 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 777 | 
         
            +
             
     | 
| 778 | 
         
            +
              /@vue/runtime-dom@3.3.13:
         
     | 
| 779 | 
         
            +
                resolution: {integrity: sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==}
         
     | 
| 780 | 
         
            +
                dependencies:
         
     | 
| 781 | 
         
            +
                  '@vue/runtime-core': 3.3.13
         
     | 
| 782 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 783 | 
         
            +
                  csstype: 3.1.3
         
     | 
| 784 | 
         
            +
             
     | 
| 785 | 
         
            +
              /@vue/server-renderer@3.3.13(vue@3.3.13):
         
     | 
| 786 | 
         
            +
                resolution: {integrity: sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==}
         
     | 
| 787 | 
         
            +
                peerDependencies:
         
     | 
| 788 | 
         
            +
                  vue: 3.3.13
         
     | 
| 789 | 
         
            +
                dependencies:
         
     | 
| 790 | 
         
            +
                  '@vue/compiler-ssr': 3.3.13
         
     | 
| 791 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 792 | 
         
            +
                  vue: 3.3.13
         
     | 
| 793 | 
         
            +
             
     | 
| 794 | 
         
            +
              /@vue/shared@3.3.13:
         
     | 
| 795 | 
         
            +
                resolution: {integrity: sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==}
         
     | 
| 796 | 
         
            +
             
     | 
| 797 | 
         
            +
              /@vue/tsconfig@0.5.1:
         
     | 
| 798 | 
         
            +
                resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==}
         
     | 
| 799 | 
         
            +
                dev: true
         
     | 
| 800 | 
         
            +
             
     | 
| 801 | 
         
            +
              /acorn-jsx@5.3.2(acorn@8.11.2):
         
     | 
| 802 | 
         
            +
                resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
         
     | 
| 803 | 
         
            +
                peerDependencies:
         
     | 
| 804 | 
         
            +
                  acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
         
     | 
| 805 | 
         
            +
                dependencies:
         
     | 
| 806 | 
         
            +
                  acorn: 8.11.2
         
     | 
| 807 | 
         
            +
                dev: true
         
     | 
| 808 | 
         
            +
             
     | 
| 809 | 
         
            +
              /acorn@8.11.2:
         
     | 
| 810 | 
         
            +
                resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
         
     | 
| 811 | 
         
            +
                engines: {node: '>=0.4.0'}
         
     | 
| 812 | 
         
            +
                hasBin: true
         
     | 
| 813 | 
         
            +
                dev: true
         
     | 
| 814 | 
         
            +
             
     | 
| 815 | 
         
            +
              /ajv@6.12.6:
         
     | 
| 816 | 
         
            +
                resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
         
     | 
| 817 | 
         
            +
                dependencies:
         
     | 
| 818 | 
         
            +
                  fast-deep-equal: 3.1.3
         
     | 
| 819 | 
         
            +
                  fast-json-stable-stringify: 2.1.0
         
     | 
| 820 | 
         
            +
                  json-schema-traverse: 0.4.1
         
     | 
| 821 | 
         
            +
                  uri-js: 4.4.1
         
     | 
| 822 | 
         
            +
                dev: true
         
     | 
| 823 | 
         
            +
             
     | 
| 824 | 
         
            +
              /ansi-regex@5.0.1:
         
     | 
| 825 | 
         
            +
                resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
         
     | 
| 826 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 827 | 
         
            +
                dev: true
         
     | 
| 828 | 
         
            +
             
     | 
| 829 | 
         
            +
              /ansi-styles@4.3.0:
         
     | 
| 830 | 
         
            +
                resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
         
     | 
| 831 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 832 | 
         
            +
                dependencies:
         
     | 
| 833 | 
         
            +
                  color-convert: 2.0.1
         
     | 
| 834 | 
         
            +
                dev: true
         
     | 
| 835 | 
         
            +
             
     | 
| 836 | 
         
            +
              /any-promise@1.3.0:
         
     | 
| 837 | 
         
            +
                resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
         
     | 
| 838 | 
         
            +
                dev: true
         
     | 
| 839 | 
         
            +
             
     | 
| 840 | 
         
            +
              /anymatch@3.1.3:
         
     | 
| 841 | 
         
            +
                resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
         
     | 
| 842 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 843 | 
         
            +
                dependencies:
         
     | 
| 844 | 
         
            +
                  normalize-path: 3.0.0
         
     | 
| 845 | 
         
            +
                  picomatch: 2.3.1
         
     | 
| 846 | 
         
            +
                dev: true
         
     | 
| 847 | 
         
            +
             
     | 
| 848 | 
         
            +
              /arg@5.0.2:
         
     | 
| 849 | 
         
            +
                resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
         
     | 
| 850 | 
         
            +
                dev: true
         
     | 
| 851 | 
         
            +
             
     | 
| 852 | 
         
            +
              /argparse@2.0.1:
         
     | 
| 853 | 
         
            +
                resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
         
     | 
| 854 | 
         
            +
                dev: true
         
     | 
| 855 | 
         
            +
             
     | 
| 856 | 
         
            +
              /autoprefixer@10.4.16(postcss@8.4.32):
         
     | 
| 857 | 
         
            +
                resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
         
     | 
| 858 | 
         
            +
                engines: {node: ^10 || ^12 || >=14}
         
     | 
| 859 | 
         
            +
                hasBin: true
         
     | 
| 860 | 
         
            +
                peerDependencies:
         
     | 
| 861 | 
         
            +
                  postcss: ^8.1.0
         
     | 
| 862 | 
         
            +
                dependencies:
         
     | 
| 863 | 
         
            +
                  browserslist: 4.22.2
         
     | 
| 864 | 
         
            +
                  caniuse-lite: 1.0.30001570
         
     | 
| 865 | 
         
            +
                  fraction.js: 4.3.7
         
     | 
| 866 | 
         
            +
                  normalize-range: 0.1.2
         
     | 
| 867 | 
         
            +
                  picocolors: 1.0.0
         
     | 
| 868 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 869 | 
         
            +
                  postcss-value-parser: 4.2.0
         
     | 
| 870 | 
         
            +
                dev: true
         
     | 
| 871 | 
         
            +
             
     | 
| 872 | 
         
            +
              /balanced-match@1.0.2:
         
     | 
| 873 | 
         
            +
                resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
         
     | 
| 874 | 
         
            +
                dev: true
         
     | 
| 875 | 
         
            +
             
     | 
| 876 | 
         
            +
              /binary-extensions@2.2.0:
         
     | 
| 877 | 
         
            +
                resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
         
     | 
| 878 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 879 | 
         
            +
                dev: true
         
     | 
| 880 | 
         
            +
             
     | 
| 881 | 
         
            +
              /boolbase@1.0.0:
         
     | 
| 882 | 
         
            +
                resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
         
     | 
| 883 | 
         
            +
                dev: true
         
     | 
| 884 | 
         
            +
             
     | 
| 885 | 
         
            +
              /brace-expansion@1.1.11:
         
     | 
| 886 | 
         
            +
                resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
         
     | 
| 887 | 
         
            +
                dependencies:
         
     | 
| 888 | 
         
            +
                  balanced-match: 1.0.2
         
     | 
| 889 | 
         
            +
                  concat-map: 0.0.1
         
     | 
| 890 | 
         
            +
                dev: true
         
     | 
| 891 | 
         
            +
             
     | 
| 892 | 
         
            +
              /braces@3.0.2:
         
     | 
| 893 | 
         
            +
                resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
         
     | 
| 894 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 895 | 
         
            +
                dependencies:
         
     | 
| 896 | 
         
            +
                  fill-range: 7.0.1
         
     | 
| 897 | 
         
            +
                dev: true
         
     | 
| 898 | 
         
            +
             
     | 
| 899 | 
         
            +
              /browserslist@4.22.2:
         
     | 
| 900 | 
         
            +
                resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
         
     | 
| 901 | 
         
            +
                engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
         
     | 
| 902 | 
         
            +
                hasBin: true
         
     | 
| 903 | 
         
            +
                dependencies:
         
     | 
| 904 | 
         
            +
                  caniuse-lite: 1.0.30001570
         
     | 
| 905 | 
         
            +
                  electron-to-chromium: 1.4.615
         
     | 
| 906 | 
         
            +
                  node-releases: 2.0.14
         
     | 
| 907 | 
         
            +
                  update-browserslist-db: 1.0.13(browserslist@4.22.2)
         
     | 
| 908 | 
         
            +
                dev: true
         
     | 
| 909 | 
         
            +
             
     | 
| 910 | 
         
            +
              /callsites@3.1.0:
         
     | 
| 911 | 
         
            +
                resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
         
     | 
| 912 | 
         
            +
                engines: {node: '>=6'}
         
     | 
| 913 | 
         
            +
                dev: true
         
     | 
| 914 | 
         
            +
             
     | 
| 915 | 
         
            +
              /camelcase-css@2.0.1:
         
     | 
| 916 | 
         
            +
                resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
         
     | 
| 917 | 
         
            +
                engines: {node: '>= 6'}
         
     | 
| 918 | 
         
            +
                dev: true
         
     | 
| 919 | 
         
            +
             
     | 
| 920 | 
         
            +
              /caniuse-lite@1.0.30001570:
         
     | 
| 921 | 
         
            +
                resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==}
         
     | 
| 922 | 
         
            +
                dev: true
         
     | 
| 923 | 
         
            +
             
     | 
| 924 | 
         
            +
              /chalk@4.1.2:
         
     | 
| 925 | 
         
            +
                resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
         
     | 
| 926 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 927 | 
         
            +
                dependencies:
         
     | 
| 928 | 
         
            +
                  ansi-styles: 4.3.0
         
     | 
| 929 | 
         
            +
                  supports-color: 7.2.0
         
     | 
| 930 | 
         
            +
                dev: true
         
     | 
| 931 | 
         
            +
             
     | 
| 932 | 
         
            +
              /chokidar@3.5.3:
         
     | 
| 933 | 
         
            +
                resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
         
     | 
| 934 | 
         
            +
                engines: {node: '>= 8.10.0'}
         
     | 
| 935 | 
         
            +
                dependencies:
         
     | 
| 936 | 
         
            +
                  anymatch: 3.1.3
         
     | 
| 937 | 
         
            +
                  braces: 3.0.2
         
     | 
| 938 | 
         
            +
                  glob-parent: 5.1.2
         
     | 
| 939 | 
         
            +
                  is-binary-path: 2.1.0
         
     | 
| 940 | 
         
            +
                  is-glob: 4.0.3
         
     | 
| 941 | 
         
            +
                  normalize-path: 3.0.0
         
     | 
| 942 | 
         
            +
                  readdirp: 3.6.0
         
     | 
| 943 | 
         
            +
                optionalDependencies:
         
     | 
| 944 | 
         
            +
                  fsevents: 2.3.3
         
     | 
| 945 | 
         
            +
                dev: true
         
     | 
| 946 | 
         
            +
             
     | 
| 947 | 
         
            +
              /color-convert@2.0.1:
         
     | 
| 948 | 
         
            +
                resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
         
     | 
| 949 | 
         
            +
                engines: {node: '>=7.0.0'}
         
     | 
| 950 | 
         
            +
                dependencies:
         
     | 
| 951 | 
         
            +
                  color-name: 1.1.4
         
     | 
| 952 | 
         
            +
                dev: true
         
     | 
| 953 | 
         
            +
             
     | 
| 954 | 
         
            +
              /color-name@1.1.4:
         
     | 
| 955 | 
         
            +
                resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
         
     | 
| 956 | 
         
            +
                dev: true
         
     | 
| 957 | 
         
            +
             
     | 
| 958 | 
         
            +
              /commander@4.1.1:
         
     | 
| 959 | 
         
            +
                resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
         
     | 
| 960 | 
         
            +
                engines: {node: '>= 6'}
         
     | 
| 961 | 
         
            +
                dev: true
         
     | 
| 962 | 
         
            +
             
     | 
| 963 | 
         
            +
              /concat-map@0.0.1:
         
     | 
| 964 | 
         
            +
                resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
         
     | 
| 965 | 
         
            +
                dev: true
         
     | 
| 966 | 
         
            +
             
     | 
| 967 | 
         
            +
              /cross-spawn@7.0.3:
         
     | 
| 968 | 
         
            +
                resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
         
     | 
| 969 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 970 | 
         
            +
                dependencies:
         
     | 
| 971 | 
         
            +
                  path-key: 3.1.1
         
     | 
| 972 | 
         
            +
                  shebang-command: 2.0.0
         
     | 
| 973 | 
         
            +
                  which: 2.0.2
         
     | 
| 974 | 
         
            +
                dev: true
         
     | 
| 975 | 
         
            +
             
     | 
| 976 | 
         
            +
              /cssesc@3.0.0:
         
     | 
| 977 | 
         
            +
                resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
         
     | 
| 978 | 
         
            +
                engines: {node: '>=4'}
         
     | 
| 979 | 
         
            +
                hasBin: true
         
     | 
| 980 | 
         
            +
                dev: true
         
     | 
| 981 | 
         
            +
             
     | 
| 982 | 
         
            +
              /csstype@3.1.3:
         
     | 
| 983 | 
         
            +
                resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
         
     | 
| 984 | 
         
            +
             
     | 
| 985 | 
         
            +
              /debug@4.3.4:
         
     | 
| 986 | 
         
            +
                resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
         
     | 
| 987 | 
         
            +
                engines: {node: '>=6.0'}
         
     | 
| 988 | 
         
            +
                peerDependencies:
         
     | 
| 989 | 
         
            +
                  supports-color: '*'
         
     | 
| 990 | 
         
            +
                peerDependenciesMeta:
         
     | 
| 991 | 
         
            +
                  supports-color:
         
     | 
| 992 | 
         
            +
                    optional: true
         
     | 
| 993 | 
         
            +
                dependencies:
         
     | 
| 994 | 
         
            +
                  ms: 2.1.2
         
     | 
| 995 | 
         
            +
                dev: true
         
     | 
| 996 | 
         
            +
             
     | 
| 997 | 
         
            +
              /deep-is@0.1.4:
         
     | 
| 998 | 
         
            +
                resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
         
     | 
| 999 | 
         
            +
                dev: true
         
     | 
| 1000 | 
         
            +
             
     | 
| 1001 | 
         
            +
              /didyoumean@1.2.2:
         
     | 
| 1002 | 
         
            +
                resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
         
     | 
| 1003 | 
         
            +
                dev: true
         
     | 
| 1004 | 
         
            +
             
     | 
| 1005 | 
         
            +
              /dlv@1.1.3:
         
     | 
| 1006 | 
         
            +
                resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
         
     | 
| 1007 | 
         
            +
                dev: true
         
     | 
| 1008 | 
         
            +
             
     | 
| 1009 | 
         
            +
              /doctrine@3.0.0:
         
     | 
| 1010 | 
         
            +
                resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
         
     | 
| 1011 | 
         
            +
                engines: {node: '>=6.0.0'}
         
     | 
| 1012 | 
         
            +
                dependencies:
         
     | 
| 1013 | 
         
            +
                  esutils: 2.0.3
         
     | 
| 1014 | 
         
            +
                dev: true
         
     | 
| 1015 | 
         
            +
             
     | 
| 1016 | 
         
            +
              /electron-to-chromium@1.4.615:
         
     | 
| 1017 | 
         
            +
                resolution: {integrity: sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==}
         
     | 
| 1018 | 
         
            +
                dev: true
         
     | 
| 1019 | 
         
            +
             
     | 
| 1020 | 
         
            +
              /esbuild@0.19.10:
         
     | 
| 1021 | 
         
            +
                resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
         
     | 
| 1022 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 1023 | 
         
            +
                hasBin: true
         
     | 
| 1024 | 
         
            +
                requiresBuild: true
         
     | 
| 1025 | 
         
            +
                optionalDependencies:
         
     | 
| 1026 | 
         
            +
                  '@esbuild/aix-ppc64': 0.19.10
         
     | 
| 1027 | 
         
            +
                  '@esbuild/android-arm': 0.19.10
         
     | 
| 1028 | 
         
            +
                  '@esbuild/android-arm64': 0.19.10
         
     | 
| 1029 | 
         
            +
                  '@esbuild/android-x64': 0.19.10
         
     | 
| 1030 | 
         
            +
                  '@esbuild/darwin-arm64': 0.19.10
         
     | 
| 1031 | 
         
            +
                  '@esbuild/darwin-x64': 0.19.10
         
     | 
| 1032 | 
         
            +
                  '@esbuild/freebsd-arm64': 0.19.10
         
     | 
| 1033 | 
         
            +
                  '@esbuild/freebsd-x64': 0.19.10
         
     | 
| 1034 | 
         
            +
                  '@esbuild/linux-arm': 0.19.10
         
     | 
| 1035 | 
         
            +
                  '@esbuild/linux-arm64': 0.19.10
         
     | 
| 1036 | 
         
            +
                  '@esbuild/linux-ia32': 0.19.10
         
     | 
| 1037 | 
         
            +
                  '@esbuild/linux-loong64': 0.19.10
         
     | 
| 1038 | 
         
            +
                  '@esbuild/linux-mips64el': 0.19.10
         
     | 
| 1039 | 
         
            +
                  '@esbuild/linux-ppc64': 0.19.10
         
     | 
| 1040 | 
         
            +
                  '@esbuild/linux-riscv64': 0.19.10
         
     | 
| 1041 | 
         
            +
                  '@esbuild/linux-s390x': 0.19.10
         
     | 
| 1042 | 
         
            +
                  '@esbuild/linux-x64': 0.19.10
         
     | 
| 1043 | 
         
            +
                  '@esbuild/netbsd-x64': 0.19.10
         
     | 
| 1044 | 
         
            +
                  '@esbuild/openbsd-x64': 0.19.10
         
     | 
| 1045 | 
         
            +
                  '@esbuild/sunos-x64': 0.19.10
         
     | 
| 1046 | 
         
            +
                  '@esbuild/win32-arm64': 0.19.10
         
     | 
| 1047 | 
         
            +
                  '@esbuild/win32-ia32': 0.19.10
         
     | 
| 1048 | 
         
            +
                  '@esbuild/win32-x64': 0.19.10
         
     | 
| 1049 | 
         
            +
                dev: true
         
     | 
| 1050 | 
         
            +
             
     | 
| 1051 | 
         
            +
              /escalade@3.1.1:
         
     | 
| 1052 | 
         
            +
                resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
         
     | 
| 1053 | 
         
            +
                engines: {node: '>=6'}
         
     | 
| 1054 | 
         
            +
                dev: true
         
     | 
| 1055 | 
         
            +
             
     | 
| 1056 | 
         
            +
              /escape-string-regexp@4.0.0:
         
     | 
| 1057 | 
         
            +
                resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
         
     | 
| 1058 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1059 | 
         
            +
                dev: true
         
     | 
| 1060 | 
         
            +
             
     | 
| 1061 | 
         
            +
              /eslint-plugin-vue@9.19.2(eslint@8.56.0):
         
     | 
| 1062 | 
         
            +
                resolution: {integrity: sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==}
         
     | 
| 1063 | 
         
            +
                engines: {node: ^14.17.0 || >=16.0.0}
         
     | 
| 1064 | 
         
            +
                peerDependencies:
         
     | 
| 1065 | 
         
            +
                  eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
         
     | 
| 1066 | 
         
            +
                dependencies:
         
     | 
| 1067 | 
         
            +
                  '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
         
     | 
| 1068 | 
         
            +
                  eslint: 8.56.0
         
     | 
| 1069 | 
         
            +
                  natural-compare: 1.4.0
         
     | 
| 1070 | 
         
            +
                  nth-check: 2.1.1
         
     | 
| 1071 | 
         
            +
                  postcss-selector-parser: 6.0.13
         
     | 
| 1072 | 
         
            +
                  semver: 7.5.4
         
     | 
| 1073 | 
         
            +
                  vue-eslint-parser: 9.3.2(eslint@8.56.0)
         
     | 
| 1074 | 
         
            +
                  xml-name-validator: 4.0.0
         
     | 
| 1075 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 1076 | 
         
            +
                  - supports-color
         
     | 
| 1077 | 
         
            +
                dev: true
         
     | 
| 1078 | 
         
            +
             
     | 
| 1079 | 
         
            +
              /eslint-scope@7.2.2:
         
     | 
| 1080 | 
         
            +
                resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
         
     | 
| 1081 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 1082 | 
         
            +
                dependencies:
         
     | 
| 1083 | 
         
            +
                  esrecurse: 4.3.0
         
     | 
| 1084 | 
         
            +
                  estraverse: 5.3.0
         
     | 
| 1085 | 
         
            +
                dev: true
         
     | 
| 1086 | 
         
            +
             
     | 
| 1087 | 
         
            +
              /eslint-visitor-keys@3.4.3:
         
     | 
| 1088 | 
         
            +
                resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
         
     | 
| 1089 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 1090 | 
         
            +
                dev: true
         
     | 
| 1091 | 
         
            +
             
     | 
| 1092 | 
         
            +
              /eslint@8.56.0:
         
     | 
| 1093 | 
         
            +
                resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
         
     | 
| 1094 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 1095 | 
         
            +
                hasBin: true
         
     | 
| 1096 | 
         
            +
                dependencies:
         
     | 
| 1097 | 
         
            +
                  '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
         
     | 
| 1098 | 
         
            +
                  '@eslint-community/regexpp': 4.10.0
         
     | 
| 1099 | 
         
            +
                  '@eslint/eslintrc': 2.1.4
         
     | 
| 1100 | 
         
            +
                  '@eslint/js': 8.56.0
         
     | 
| 1101 | 
         
            +
                  '@humanwhocodes/config-array': 0.11.13
         
     | 
| 1102 | 
         
            +
                  '@humanwhocodes/module-importer': 1.0.1
         
     | 
| 1103 | 
         
            +
                  '@nodelib/fs.walk': 1.2.8
         
     | 
| 1104 | 
         
            +
                  '@ungap/structured-clone': 1.2.0
         
     | 
| 1105 | 
         
            +
                  ajv: 6.12.6
         
     | 
| 1106 | 
         
            +
                  chalk: 4.1.2
         
     | 
| 1107 | 
         
            +
                  cross-spawn: 7.0.3
         
     | 
| 1108 | 
         
            +
                  debug: 4.3.4
         
     | 
| 1109 | 
         
            +
                  doctrine: 3.0.0
         
     | 
| 1110 | 
         
            +
                  escape-string-regexp: 4.0.0
         
     | 
| 1111 | 
         
            +
                  eslint-scope: 7.2.2
         
     | 
| 1112 | 
         
            +
                  eslint-visitor-keys: 3.4.3
         
     | 
| 1113 | 
         
            +
                  espree: 9.6.1
         
     | 
| 1114 | 
         
            +
                  esquery: 1.5.0
         
     | 
| 1115 | 
         
            +
                  esutils: 2.0.3
         
     | 
| 1116 | 
         
            +
                  fast-deep-equal: 3.1.3
         
     | 
| 1117 | 
         
            +
                  file-entry-cache: 6.0.1
         
     | 
| 1118 | 
         
            +
                  find-up: 5.0.0
         
     | 
| 1119 | 
         
            +
                  glob-parent: 6.0.2
         
     | 
| 1120 | 
         
            +
                  globals: 13.24.0
         
     | 
| 1121 | 
         
            +
                  graphemer: 1.4.0
         
     | 
| 1122 | 
         
            +
                  ignore: 5.3.0
         
     | 
| 1123 | 
         
            +
                  imurmurhash: 0.1.4
         
     | 
| 1124 | 
         
            +
                  is-glob: 4.0.3
         
     | 
| 1125 | 
         
            +
                  is-path-inside: 3.0.3
         
     | 
| 1126 | 
         
            +
                  js-yaml: 4.1.0
         
     | 
| 1127 | 
         
            +
                  json-stable-stringify-without-jsonify: 1.0.1
         
     | 
| 1128 | 
         
            +
                  levn: 0.4.1
         
     | 
| 1129 | 
         
            +
                  lodash.merge: 4.6.2
         
     | 
| 1130 | 
         
            +
                  minimatch: 3.1.2
         
     | 
| 1131 | 
         
            +
                  natural-compare: 1.4.0
         
     | 
| 1132 | 
         
            +
                  optionator: 0.9.3
         
     | 
| 1133 | 
         
            +
                  strip-ansi: 6.0.1
         
     | 
| 1134 | 
         
            +
                  text-table: 0.2.0
         
     | 
| 1135 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 1136 | 
         
            +
                  - supports-color
         
     | 
| 1137 | 
         
            +
                dev: true
         
     | 
| 1138 | 
         
            +
             
     | 
| 1139 | 
         
            +
              /espree@9.6.1:
         
     | 
| 1140 | 
         
            +
                resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
         
     | 
| 1141 | 
         
            +
                engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
         
     | 
| 1142 | 
         
            +
                dependencies:
         
     | 
| 1143 | 
         
            +
                  acorn: 8.11.2
         
     | 
| 1144 | 
         
            +
                  acorn-jsx: 5.3.2(acorn@8.11.2)
         
     | 
| 1145 | 
         
            +
                  eslint-visitor-keys: 3.4.3
         
     | 
| 1146 | 
         
            +
                dev: true
         
     | 
| 1147 | 
         
            +
             
     | 
| 1148 | 
         
            +
              /esquery@1.5.0:
         
     | 
| 1149 | 
         
            +
                resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
         
     | 
| 1150 | 
         
            +
                engines: {node: '>=0.10'}
         
     | 
| 1151 | 
         
            +
                dependencies:
         
     | 
| 1152 | 
         
            +
                  estraverse: 5.3.0
         
     | 
| 1153 | 
         
            +
                dev: true
         
     | 
| 1154 | 
         
            +
             
     | 
| 1155 | 
         
            +
              /esrecurse@4.3.0:
         
     | 
| 1156 | 
         
            +
                resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
         
     | 
| 1157 | 
         
            +
                engines: {node: '>=4.0'}
         
     | 
| 1158 | 
         
            +
                dependencies:
         
     | 
| 1159 | 
         
            +
                  estraverse: 5.3.0
         
     | 
| 1160 | 
         
            +
                dev: true
         
     | 
| 1161 | 
         
            +
             
     | 
| 1162 | 
         
            +
              /estraverse@5.3.0:
         
     | 
| 1163 | 
         
            +
                resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
         
     | 
| 1164 | 
         
            +
                engines: {node: '>=4.0'}
         
     | 
| 1165 | 
         
            +
                dev: true
         
     | 
| 1166 | 
         
            +
             
     | 
| 1167 | 
         
            +
              /estree-walker@2.0.2:
         
     | 
| 1168 | 
         
            +
                resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
         
     | 
| 1169 | 
         
            +
             
     | 
| 1170 | 
         
            +
              /esutils@2.0.3:
         
     | 
| 1171 | 
         
            +
                resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
         
     | 
| 1172 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1173 | 
         
            +
                dev: true
         
     | 
| 1174 | 
         
            +
             
     | 
| 1175 | 
         
            +
              /fast-deep-equal@3.1.3:
         
     | 
| 1176 | 
         
            +
                resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
         
     | 
| 1177 | 
         
            +
                dev: true
         
     | 
| 1178 | 
         
            +
             
     | 
| 1179 | 
         
            +
              /fast-glob@3.3.2:
         
     | 
| 1180 | 
         
            +
                resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
         
     | 
| 1181 | 
         
            +
                engines: {node: '>=8.6.0'}
         
     | 
| 1182 | 
         
            +
                dependencies:
         
     | 
| 1183 | 
         
            +
                  '@nodelib/fs.stat': 2.0.5
         
     | 
| 1184 | 
         
            +
                  '@nodelib/fs.walk': 1.2.8
         
     | 
| 1185 | 
         
            +
                  glob-parent: 5.1.2
         
     | 
| 1186 | 
         
            +
                  merge2: 1.4.1
         
     | 
| 1187 | 
         
            +
                  micromatch: 4.0.5
         
     | 
| 1188 | 
         
            +
                dev: true
         
     | 
| 1189 | 
         
            +
             
     | 
| 1190 | 
         
            +
              /fast-json-stable-stringify@2.1.0:
         
     | 
| 1191 | 
         
            +
                resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
         
     | 
| 1192 | 
         
            +
                dev: true
         
     | 
| 1193 | 
         
            +
             
     | 
| 1194 | 
         
            +
              /fast-levenshtein@2.0.6:
         
     | 
| 1195 | 
         
            +
                resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
         
     | 
| 1196 | 
         
            +
                dev: true
         
     | 
| 1197 | 
         
            +
             
     | 
| 1198 | 
         
            +
              /fastq@1.16.0:
         
     | 
| 1199 | 
         
            +
                resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
         
     | 
| 1200 | 
         
            +
                dependencies:
         
     | 
| 1201 | 
         
            +
                  reusify: 1.0.4
         
     | 
| 1202 | 
         
            +
                dev: true
         
     | 
| 1203 | 
         
            +
             
     | 
| 1204 | 
         
            +
              /file-entry-cache@6.0.1:
         
     | 
| 1205 | 
         
            +
                resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
         
     | 
| 1206 | 
         
            +
                engines: {node: ^10.12.0 || >=12.0.0}
         
     | 
| 1207 | 
         
            +
                dependencies:
         
     | 
| 1208 | 
         
            +
                  flat-cache: 3.2.0
         
     | 
| 1209 | 
         
            +
                dev: true
         
     | 
| 1210 | 
         
            +
             
     | 
| 1211 | 
         
            +
              /fill-range@7.0.1:
         
     | 
| 1212 | 
         
            +
                resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
         
     | 
| 1213 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1214 | 
         
            +
                dependencies:
         
     | 
| 1215 | 
         
            +
                  to-regex-range: 5.0.1
         
     | 
| 1216 | 
         
            +
                dev: true
         
     | 
| 1217 | 
         
            +
             
     | 
| 1218 | 
         
            +
              /find-up@5.0.0:
         
     | 
| 1219 | 
         
            +
                resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
         
     | 
| 1220 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1221 | 
         
            +
                dependencies:
         
     | 
| 1222 | 
         
            +
                  locate-path: 6.0.0
         
     | 
| 1223 | 
         
            +
                  path-exists: 4.0.0
         
     | 
| 1224 | 
         
            +
                dev: true
         
     | 
| 1225 | 
         
            +
             
     | 
| 1226 | 
         
            +
              /flat-cache@3.2.0:
         
     | 
| 1227 | 
         
            +
                resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
         
     | 
| 1228 | 
         
            +
                engines: {node: ^10.12.0 || >=12.0.0}
         
     | 
| 1229 | 
         
            +
                dependencies:
         
     | 
| 1230 | 
         
            +
                  flatted: 3.2.9
         
     | 
| 1231 | 
         
            +
                  keyv: 4.5.4
         
     | 
| 1232 | 
         
            +
                  rimraf: 3.0.2
         
     | 
| 1233 | 
         
            +
                dev: true
         
     | 
| 1234 | 
         
            +
             
     | 
| 1235 | 
         
            +
              /flatted@3.2.9:
         
     | 
| 1236 | 
         
            +
                resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
         
     | 
| 1237 | 
         
            +
                dev: true
         
     | 
| 1238 | 
         
            +
             
     | 
| 1239 | 
         
            +
              /fraction.js@4.3.7:
         
     | 
| 1240 | 
         
            +
                resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
         
     | 
| 1241 | 
         
            +
                dev: true
         
     | 
| 1242 | 
         
            +
             
     | 
| 1243 | 
         
            +
              /fs.realpath@1.0.0:
         
     | 
| 1244 | 
         
            +
                resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
         
     | 
| 1245 | 
         
            +
                dev: true
         
     | 
| 1246 | 
         
            +
             
     | 
| 1247 | 
         
            +
              /fsevents@2.3.3:
         
     | 
| 1248 | 
         
            +
                resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
         
     | 
| 1249 | 
         
            +
                engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
         
     | 
| 1250 | 
         
            +
                os: [darwin]
         
     | 
| 1251 | 
         
            +
                requiresBuild: true
         
     | 
| 1252 | 
         
            +
                dev: true
         
     | 
| 1253 | 
         
            +
                optional: true
         
     | 
| 1254 | 
         
            +
             
     | 
| 1255 | 
         
            +
              /function-bind@1.1.2:
         
     | 
| 1256 | 
         
            +
                resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
         
     | 
| 1257 | 
         
            +
                dev: true
         
     | 
| 1258 | 
         
            +
             
     | 
| 1259 | 
         
            +
              /geojson-rbush@3.2.0:
         
     | 
| 1260 | 
         
            +
                resolution: {integrity: sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==}
         
     | 
| 1261 | 
         
            +
                dependencies:
         
     | 
| 1262 | 
         
            +
                  '@turf/bbox': 6.5.0
         
     | 
| 1263 | 
         
            +
                  '@turf/helpers': 6.5.0
         
     | 
| 1264 | 
         
            +
                  '@turf/meta': 6.5.0
         
     | 
| 1265 | 
         
            +
                  '@types/geojson': 7946.0.8
         
     | 
| 1266 | 
         
            +
                  rbush: 3.0.1
         
     | 
| 1267 | 
         
            +
                dev: false
         
     | 
| 1268 | 
         
            +
             
     | 
| 1269 | 
         
            +
              /glob-parent@5.1.2:
         
     | 
| 1270 | 
         
            +
                resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
         
     | 
| 1271 | 
         
            +
                engines: {node: '>= 6'}
         
     | 
| 1272 | 
         
            +
                dependencies:
         
     | 
| 1273 | 
         
            +
                  is-glob: 4.0.3
         
     | 
| 1274 | 
         
            +
                dev: true
         
     | 
| 1275 | 
         
            +
             
     | 
| 1276 | 
         
            +
              /glob-parent@6.0.2:
         
     | 
| 1277 | 
         
            +
                resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
         
     | 
| 1278 | 
         
            +
                engines: {node: '>=10.13.0'}
         
     | 
| 1279 | 
         
            +
                dependencies:
         
     | 
| 1280 | 
         
            +
                  is-glob: 4.0.3
         
     | 
| 1281 | 
         
            +
                dev: true
         
     | 
| 1282 | 
         
            +
             
     | 
| 1283 | 
         
            +
              /glob@7.1.6:
         
     | 
| 1284 | 
         
            +
                resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
         
     | 
| 1285 | 
         
            +
                dependencies:
         
     | 
| 1286 | 
         
            +
                  fs.realpath: 1.0.0
         
     | 
| 1287 | 
         
            +
                  inflight: 1.0.6
         
     | 
| 1288 | 
         
            +
                  inherits: 2.0.4
         
     | 
| 1289 | 
         
            +
                  minimatch: 3.1.2
         
     | 
| 1290 | 
         
            +
                  once: 1.4.0
         
     | 
| 1291 | 
         
            +
                  path-is-absolute: 1.0.1
         
     | 
| 1292 | 
         
            +
                dev: true
         
     | 
| 1293 | 
         
            +
             
     | 
| 1294 | 
         
            +
              /glob@7.2.3:
         
     | 
| 1295 | 
         
            +
                resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
         
     | 
| 1296 | 
         
            +
                dependencies:
         
     | 
| 1297 | 
         
            +
                  fs.realpath: 1.0.0
         
     | 
| 1298 | 
         
            +
                  inflight: 1.0.6
         
     | 
| 1299 | 
         
            +
                  inherits: 2.0.4
         
     | 
| 1300 | 
         
            +
                  minimatch: 3.1.2
         
     | 
| 1301 | 
         
            +
                  once: 1.4.0
         
     | 
| 1302 | 
         
            +
                  path-is-absolute: 1.0.1
         
     | 
| 1303 | 
         
            +
                dev: true
         
     | 
| 1304 | 
         
            +
             
     | 
| 1305 | 
         
            +
              /globals@13.24.0:
         
     | 
| 1306 | 
         
            +
                resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
         
     | 
| 1307 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1308 | 
         
            +
                dependencies:
         
     | 
| 1309 | 
         
            +
                  type-fest: 0.20.2
         
     | 
| 1310 | 
         
            +
                dev: true
         
     | 
| 1311 | 
         
            +
             
     | 
| 1312 | 
         
            +
              /graphemer@1.4.0:
         
     | 
| 1313 | 
         
            +
                resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
         
     | 
| 1314 | 
         
            +
                dev: true
         
     | 
| 1315 | 
         
            +
             
     | 
| 1316 | 
         
            +
              /has-flag@4.0.0:
         
     | 
| 1317 | 
         
            +
                resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
         
     | 
| 1318 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1319 | 
         
            +
                dev: true
         
     | 
| 1320 | 
         
            +
             
     | 
| 1321 | 
         
            +
              /hasown@2.0.0:
         
     | 
| 1322 | 
         
            +
                resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
         
     | 
| 1323 | 
         
            +
                engines: {node: '>= 0.4'}
         
     | 
| 1324 | 
         
            +
                dependencies:
         
     | 
| 1325 | 
         
            +
                  function-bind: 1.1.2
         
     | 
| 1326 | 
         
            +
                dev: true
         
     | 
| 1327 | 
         
            +
             
     | 
| 1328 | 
         
            +
              /ignore@5.3.0:
         
     | 
| 1329 | 
         
            +
                resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
         
     | 
| 1330 | 
         
            +
                engines: {node: '>= 4'}
         
     | 
| 1331 | 
         
            +
                dev: true
         
     | 
| 1332 | 
         
            +
             
     | 
| 1333 | 
         
            +
              /import-fresh@3.3.0:
         
     | 
| 1334 | 
         
            +
                resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
         
     | 
| 1335 | 
         
            +
                engines: {node: '>=6'}
         
     | 
| 1336 | 
         
            +
                dependencies:
         
     | 
| 1337 | 
         
            +
                  parent-module: 1.0.1
         
     | 
| 1338 | 
         
            +
                  resolve-from: 4.0.0
         
     | 
| 1339 | 
         
            +
                dev: true
         
     | 
| 1340 | 
         
            +
             
     | 
| 1341 | 
         
            +
              /imurmurhash@0.1.4:
         
     | 
| 1342 | 
         
            +
                resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
         
     | 
| 1343 | 
         
            +
                engines: {node: '>=0.8.19'}
         
     | 
| 1344 | 
         
            +
                dev: true
         
     | 
| 1345 | 
         
            +
             
     | 
| 1346 | 
         
            +
              /inflight@1.0.6:
         
     | 
| 1347 | 
         
            +
                resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
         
     | 
| 1348 | 
         
            +
                dependencies:
         
     | 
| 1349 | 
         
            +
                  once: 1.4.0
         
     | 
| 1350 | 
         
            +
                  wrappy: 1.0.2
         
     | 
| 1351 | 
         
            +
                dev: true
         
     | 
| 1352 | 
         
            +
             
     | 
| 1353 | 
         
            +
              /inherits@2.0.4:
         
     | 
| 1354 | 
         
            +
                resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
         
     | 
| 1355 | 
         
            +
                dev: true
         
     | 
| 1356 | 
         
            +
             
     | 
| 1357 | 
         
            +
              /is-binary-path@2.1.0:
         
     | 
| 1358 | 
         
            +
                resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
         
     | 
| 1359 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1360 | 
         
            +
                dependencies:
         
     | 
| 1361 | 
         
            +
                  binary-extensions: 2.2.0
         
     | 
| 1362 | 
         
            +
                dev: true
         
     | 
| 1363 | 
         
            +
             
     | 
| 1364 | 
         
            +
              /is-core-module@2.13.1:
         
     | 
| 1365 | 
         
            +
                resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
         
     | 
| 1366 | 
         
            +
                dependencies:
         
     | 
| 1367 | 
         
            +
                  hasown: 2.0.0
         
     | 
| 1368 | 
         
            +
                dev: true
         
     | 
| 1369 | 
         
            +
             
     | 
| 1370 | 
         
            +
              /is-extglob@2.1.1:
         
     | 
| 1371 | 
         
            +
                resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
         
     | 
| 1372 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1373 | 
         
            +
                dev: true
         
     | 
| 1374 | 
         
            +
             
     | 
| 1375 | 
         
            +
              /is-glob@4.0.3:
         
     | 
| 1376 | 
         
            +
                resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
         
     | 
| 1377 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1378 | 
         
            +
                dependencies:
         
     | 
| 1379 | 
         
            +
                  is-extglob: 2.1.1
         
     | 
| 1380 | 
         
            +
                dev: true
         
     | 
| 1381 | 
         
            +
             
     | 
| 1382 | 
         
            +
              /is-number@7.0.0:
         
     | 
| 1383 | 
         
            +
                resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
         
     | 
| 1384 | 
         
            +
                engines: {node: '>=0.12.0'}
         
     | 
| 1385 | 
         
            +
                dev: true
         
     | 
| 1386 | 
         
            +
             
     | 
| 1387 | 
         
            +
              /is-path-inside@3.0.3:
         
     | 
| 1388 | 
         
            +
                resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
         
     | 
| 1389 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1390 | 
         
            +
                dev: true
         
     | 
| 1391 | 
         
            +
             
     | 
| 1392 | 
         
            +
              /isexe@2.0.0:
         
     | 
| 1393 | 
         
            +
                resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
         
     | 
| 1394 | 
         
            +
                dev: true
         
     | 
| 1395 | 
         
            +
             
     | 
| 1396 | 
         
            +
              /jiti@1.21.0:
         
     | 
| 1397 | 
         
            +
                resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
         
     | 
| 1398 | 
         
            +
                hasBin: true
         
     | 
| 1399 | 
         
            +
                dev: true
         
     | 
| 1400 | 
         
            +
             
     | 
| 1401 | 
         
            +
              /js-yaml@4.1.0:
         
     | 
| 1402 | 
         
            +
                resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
         
     | 
| 1403 | 
         
            +
                hasBin: true
         
     | 
| 1404 | 
         
            +
                dependencies:
         
     | 
| 1405 | 
         
            +
                  argparse: 2.0.1
         
     | 
| 1406 | 
         
            +
                dev: true
         
     | 
| 1407 | 
         
            +
             
     | 
| 1408 | 
         
            +
              /json-buffer@3.0.1:
         
     | 
| 1409 | 
         
            +
                resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
         
     | 
| 1410 | 
         
            +
                dev: true
         
     | 
| 1411 | 
         
            +
             
     | 
| 1412 | 
         
            +
              /json-schema-traverse@0.4.1:
         
     | 
| 1413 | 
         
            +
                resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
         
     | 
| 1414 | 
         
            +
                dev: true
         
     | 
| 1415 | 
         
            +
             
     | 
| 1416 | 
         
            +
              /json-stable-stringify-without-jsonify@1.0.1:
         
     | 
| 1417 | 
         
            +
                resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
         
     | 
| 1418 | 
         
            +
                dev: true
         
     | 
| 1419 | 
         
            +
             
     | 
| 1420 | 
         
            +
              /keyv@4.5.4:
         
     | 
| 1421 | 
         
            +
                resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
         
     | 
| 1422 | 
         
            +
                dependencies:
         
     | 
| 1423 | 
         
            +
                  json-buffer: 3.0.1
         
     | 
| 1424 | 
         
            +
                dev: true
         
     | 
| 1425 | 
         
            +
             
     | 
| 1426 | 
         
            +
              /leaflet-providers@2.0.0:
         
     | 
| 1427 | 
         
            +
                resolution: {integrity: sha512-CWwKEnHd66Qsx0m4o5q5ZOa60s00B91pMxnlr4Y22msubfs7dhbZhdMIz8bvZQkrZqi67ppI1fsZRS6vtrLcOA==}
         
     | 
| 1428 | 
         
            +
                dev: false
         
     | 
| 1429 | 
         
            +
             
     | 
| 1430 | 
         
            +
              /leaflet@1.9.4:
         
     | 
| 1431 | 
         
            +
                resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==}
         
     | 
| 1432 | 
         
            +
                dev: false
         
     | 
| 1433 | 
         
            +
             
     | 
| 1434 | 
         
            +
              /levn@0.4.1:
         
     | 
| 1435 | 
         
            +
                resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
         
     | 
| 1436 | 
         
            +
                engines: {node: '>= 0.8.0'}
         
     | 
| 1437 | 
         
            +
                dependencies:
         
     | 
| 1438 | 
         
            +
                  prelude-ls: 1.2.1
         
     | 
| 1439 | 
         
            +
                  type-check: 0.4.0
         
     | 
| 1440 | 
         
            +
                dev: true
         
     | 
| 1441 | 
         
            +
             
     | 
| 1442 | 
         
            +
              /lilconfig@2.1.0:
         
     | 
| 1443 | 
         
            +
                resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
         
     | 
| 1444 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1445 | 
         
            +
                dev: true
         
     | 
| 1446 | 
         
            +
             
     | 
| 1447 | 
         
            +
              /lilconfig@3.0.0:
         
     | 
| 1448 | 
         
            +
                resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
         
     | 
| 1449 | 
         
            +
                engines: {node: '>=14'}
         
     | 
| 1450 | 
         
            +
                dev: true
         
     | 
| 1451 | 
         
            +
             
     | 
| 1452 | 
         
            +
              /lines-and-columns@1.2.4:
         
     | 
| 1453 | 
         
            +
                resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
         
     | 
| 1454 | 
         
            +
                dev: true
         
     | 
| 1455 | 
         
            +
             
     | 
| 1456 | 
         
            +
              /locate-path@6.0.0:
         
     | 
| 1457 | 
         
            +
                resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
         
     | 
| 1458 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1459 | 
         
            +
                dependencies:
         
     | 
| 1460 | 
         
            +
                  p-locate: 5.0.0
         
     | 
| 1461 | 
         
            +
                dev: true
         
     | 
| 1462 | 
         
            +
             
     | 
| 1463 | 
         
            +
              /lodash.merge@4.6.2:
         
     | 
| 1464 | 
         
            +
                resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
         
     | 
| 1465 | 
         
            +
                dev: true
         
     | 
| 1466 | 
         
            +
             
     | 
| 1467 | 
         
            +
              /lodash@4.17.21:
         
     | 
| 1468 | 
         
            +
                resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
         
     | 
| 1469 | 
         
            +
             
     | 
| 1470 | 
         
            +
              /lru-cache@6.0.0:
         
     | 
| 1471 | 
         
            +
                resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
         
     | 
| 1472 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1473 | 
         
            +
                dependencies:
         
     | 
| 1474 | 
         
            +
                  yallist: 4.0.0
         
     | 
| 1475 | 
         
            +
                dev: true
         
     | 
| 1476 | 
         
            +
             
     | 
| 1477 | 
         
            +
              /magic-string@0.30.5:
         
     | 
| 1478 | 
         
            +
                resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
         
     | 
| 1479 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 1480 | 
         
            +
                dependencies:
         
     | 
| 1481 | 
         
            +
                  '@jridgewell/sourcemap-codec': 1.4.15
         
     | 
| 1482 | 
         
            +
             
     | 
| 1483 | 
         
            +
              /merge2@1.4.1:
         
     | 
| 1484 | 
         
            +
                resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
         
     | 
| 1485 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 1486 | 
         
            +
                dev: true
         
     | 
| 1487 | 
         
            +
             
     | 
| 1488 | 
         
            +
              /micromatch@4.0.5:
         
     | 
| 1489 | 
         
            +
                resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
         
     | 
| 1490 | 
         
            +
                engines: {node: '>=8.6'}
         
     | 
| 1491 | 
         
            +
                dependencies:
         
     | 
| 1492 | 
         
            +
                  braces: 3.0.2
         
     | 
| 1493 | 
         
            +
                  picomatch: 2.3.1
         
     | 
| 1494 | 
         
            +
                dev: true
         
     | 
| 1495 | 
         
            +
             
     | 
| 1496 | 
         
            +
              /minimatch@3.1.2:
         
     | 
| 1497 | 
         
            +
                resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
         
     | 
| 1498 | 
         
            +
                dependencies:
         
     | 
| 1499 | 
         
            +
                  brace-expansion: 1.1.11
         
     | 
| 1500 | 
         
            +
                dev: true
         
     | 
| 1501 | 
         
            +
             
     | 
| 1502 | 
         
            +
              /ms@2.1.2:
         
     | 
| 1503 | 
         
            +
                resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
         
     | 
| 1504 | 
         
            +
                dev: true
         
     | 
| 1505 | 
         
            +
             
     | 
| 1506 | 
         
            +
              /mz@2.7.0:
         
     | 
| 1507 | 
         
            +
                resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
         
     | 
| 1508 | 
         
            +
                dependencies:
         
     | 
| 1509 | 
         
            +
                  any-promise: 1.3.0
         
     | 
| 1510 | 
         
            +
                  object-assign: 4.1.1
         
     | 
| 1511 | 
         
            +
                  thenify-all: 1.6.0
         
     | 
| 1512 | 
         
            +
                dev: true
         
     | 
| 1513 | 
         
            +
             
     | 
| 1514 | 
         
            +
              /nanoid@3.3.7:
         
     | 
| 1515 | 
         
            +
                resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
         
     | 
| 1516 | 
         
            +
                engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
         
     | 
| 1517 | 
         
            +
                hasBin: true
         
     | 
| 1518 | 
         
            +
             
     | 
| 1519 | 
         
            +
              /natural-compare@1.4.0:
         
     | 
| 1520 | 
         
            +
                resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
         
     | 
| 1521 | 
         
            +
                dev: true
         
     | 
| 1522 | 
         
            +
             
     | 
| 1523 | 
         
            +
              /node-releases@2.0.14:
         
     | 
| 1524 | 
         
            +
                resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
         
     | 
| 1525 | 
         
            +
                dev: true
         
     | 
| 1526 | 
         
            +
             
     | 
| 1527 | 
         
            +
              /normalize-path@3.0.0:
         
     | 
| 1528 | 
         
            +
                resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
         
     | 
| 1529 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1530 | 
         
            +
                dev: true
         
     | 
| 1531 | 
         
            +
             
     | 
| 1532 | 
         
            +
              /normalize-range@0.1.2:
         
     | 
| 1533 | 
         
            +
                resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
         
     | 
| 1534 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1535 | 
         
            +
                dev: true
         
     | 
| 1536 | 
         
            +
             
     | 
| 1537 | 
         
            +
              /nth-check@2.1.1:
         
     | 
| 1538 | 
         
            +
                resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
         
     | 
| 1539 | 
         
            +
                dependencies:
         
     | 
| 1540 | 
         
            +
                  boolbase: 1.0.0
         
     | 
| 1541 | 
         
            +
                dev: true
         
     | 
| 1542 | 
         
            +
             
     | 
| 1543 | 
         
            +
              /object-assign@4.1.1:
         
     | 
| 1544 | 
         
            +
                resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
         
     | 
| 1545 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1546 | 
         
            +
                dev: true
         
     | 
| 1547 | 
         
            +
             
     | 
| 1548 | 
         
            +
              /object-hash@3.0.0:
         
     | 
| 1549 | 
         
            +
                resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
         
     | 
| 1550 | 
         
            +
                engines: {node: '>= 6'}
         
     | 
| 1551 | 
         
            +
                dev: true
         
     | 
| 1552 | 
         
            +
             
     | 
| 1553 | 
         
            +
              /once@1.4.0:
         
     | 
| 1554 | 
         
            +
                resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
         
     | 
| 1555 | 
         
            +
                dependencies:
         
     | 
| 1556 | 
         
            +
                  wrappy: 1.0.2
         
     | 
| 1557 | 
         
            +
                dev: true
         
     | 
| 1558 | 
         
            +
             
     | 
| 1559 | 
         
            +
              /optionator@0.9.3:
         
     | 
| 1560 | 
         
            +
                resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
         
     | 
| 1561 | 
         
            +
                engines: {node: '>= 0.8.0'}
         
     | 
| 1562 | 
         
            +
                dependencies:
         
     | 
| 1563 | 
         
            +
                  '@aashutoshrathi/word-wrap': 1.2.6
         
     | 
| 1564 | 
         
            +
                  deep-is: 0.1.4
         
     | 
| 1565 | 
         
            +
                  fast-levenshtein: 2.0.6
         
     | 
| 1566 | 
         
            +
                  levn: 0.4.1
         
     | 
| 1567 | 
         
            +
                  prelude-ls: 1.2.1
         
     | 
| 1568 | 
         
            +
                  type-check: 0.4.0
         
     | 
| 1569 | 
         
            +
                dev: true
         
     | 
| 1570 | 
         
            +
             
     | 
| 1571 | 
         
            +
              /p-limit@3.1.0:
         
     | 
| 1572 | 
         
            +
                resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
         
     | 
| 1573 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1574 | 
         
            +
                dependencies:
         
     | 
| 1575 | 
         
            +
                  yocto-queue: 0.1.0
         
     | 
| 1576 | 
         
            +
                dev: true
         
     | 
| 1577 | 
         
            +
             
     | 
| 1578 | 
         
            +
              /p-locate@5.0.0:
         
     | 
| 1579 | 
         
            +
                resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
         
     | 
| 1580 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1581 | 
         
            +
                dependencies:
         
     | 
| 1582 | 
         
            +
                  p-limit: 3.1.0
         
     | 
| 1583 | 
         
            +
                dev: true
         
     | 
| 1584 | 
         
            +
             
     | 
| 1585 | 
         
            +
              /parent-module@1.0.1:
         
     | 
| 1586 | 
         
            +
                resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
         
     | 
| 1587 | 
         
            +
                engines: {node: '>=6'}
         
     | 
| 1588 | 
         
            +
                dependencies:
         
     | 
| 1589 | 
         
            +
                  callsites: 3.1.0
         
     | 
| 1590 | 
         
            +
                dev: true
         
     | 
| 1591 | 
         
            +
             
     | 
| 1592 | 
         
            +
              /path-exists@4.0.0:
         
     | 
| 1593 | 
         
            +
                resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
         
     | 
| 1594 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1595 | 
         
            +
                dev: true
         
     | 
| 1596 | 
         
            +
             
     | 
| 1597 | 
         
            +
              /path-is-absolute@1.0.1:
         
     | 
| 1598 | 
         
            +
                resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
         
     | 
| 1599 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1600 | 
         
            +
                dev: true
         
     | 
| 1601 | 
         
            +
             
     | 
| 1602 | 
         
            +
              /path-key@3.1.1:
         
     | 
| 1603 | 
         
            +
                resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
         
     | 
| 1604 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1605 | 
         
            +
                dev: true
         
     | 
| 1606 | 
         
            +
             
     | 
| 1607 | 
         
            +
              /path-parse@1.0.7:
         
     | 
| 1608 | 
         
            +
                resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
         
     | 
| 1609 | 
         
            +
                dev: true
         
     | 
| 1610 | 
         
            +
             
     | 
| 1611 | 
         
            +
              /picocolors@1.0.0:
         
     | 
| 1612 | 
         
            +
                resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
         
     | 
| 1613 | 
         
            +
             
     | 
| 1614 | 
         
            +
              /picomatch@2.3.1:
         
     | 
| 1615 | 
         
            +
                resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
         
     | 
| 1616 | 
         
            +
                engines: {node: '>=8.6'}
         
     | 
| 1617 | 
         
            +
                dev: true
         
     | 
| 1618 | 
         
            +
             
     | 
| 1619 | 
         
            +
              /pify@2.3.0:
         
     | 
| 1620 | 
         
            +
                resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
         
     | 
| 1621 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1622 | 
         
            +
                dev: true
         
     | 
| 1623 | 
         
            +
             
     | 
| 1624 | 
         
            +
              /pirates@4.0.6:
         
     | 
| 1625 | 
         
            +
                resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
         
     | 
| 1626 | 
         
            +
                engines: {node: '>= 6'}
         
     | 
| 1627 | 
         
            +
                dev: true
         
     | 
| 1628 | 
         
            +
             
     | 
| 1629 | 
         
            +
              /polygon-clipping@0.15.3:
         
     | 
| 1630 | 
         
            +
                resolution: {integrity: sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==}
         
     | 
| 1631 | 
         
            +
                dependencies:
         
     | 
| 1632 | 
         
            +
                  splaytree: 3.1.2
         
     | 
| 1633 | 
         
            +
                dev: false
         
     | 
| 1634 | 
         
            +
             
     | 
| 1635 | 
         
            +
              /postcss-import@15.1.0(postcss@8.4.32):
         
     | 
| 1636 | 
         
            +
                resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
         
     | 
| 1637 | 
         
            +
                engines: {node: '>=14.0.0'}
         
     | 
| 1638 | 
         
            +
                peerDependencies:
         
     | 
| 1639 | 
         
            +
                  postcss: ^8.0.0
         
     | 
| 1640 | 
         
            +
                dependencies:
         
     | 
| 1641 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1642 | 
         
            +
                  postcss-value-parser: 4.2.0
         
     | 
| 1643 | 
         
            +
                  read-cache: 1.0.0
         
     | 
| 1644 | 
         
            +
                  resolve: 1.22.8
         
     | 
| 1645 | 
         
            +
                dev: true
         
     | 
| 1646 | 
         
            +
             
     | 
| 1647 | 
         
            +
              /postcss-js@4.0.1(postcss@8.4.32):
         
     | 
| 1648 | 
         
            +
                resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
         
     | 
| 1649 | 
         
            +
                engines: {node: ^12 || ^14 || >= 16}
         
     | 
| 1650 | 
         
            +
                peerDependencies:
         
     | 
| 1651 | 
         
            +
                  postcss: ^8.4.21
         
     | 
| 1652 | 
         
            +
                dependencies:
         
     | 
| 1653 | 
         
            +
                  camelcase-css: 2.0.1
         
     | 
| 1654 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1655 | 
         
            +
                dev: true
         
     | 
| 1656 | 
         
            +
             
     | 
| 1657 | 
         
            +
              /postcss-load-config@4.0.2(postcss@8.4.32):
         
     | 
| 1658 | 
         
            +
                resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
         
     | 
| 1659 | 
         
            +
                engines: {node: '>= 14'}
         
     | 
| 1660 | 
         
            +
                peerDependencies:
         
     | 
| 1661 | 
         
            +
                  postcss: '>=8.0.9'
         
     | 
| 1662 | 
         
            +
                  ts-node: '>=9.0.0'
         
     | 
| 1663 | 
         
            +
                peerDependenciesMeta:
         
     | 
| 1664 | 
         
            +
                  postcss:
         
     | 
| 1665 | 
         
            +
                    optional: true
         
     | 
| 1666 | 
         
            +
                  ts-node:
         
     | 
| 1667 | 
         
            +
                    optional: true
         
     | 
| 1668 | 
         
            +
                dependencies:
         
     | 
| 1669 | 
         
            +
                  lilconfig: 3.0.0
         
     | 
| 1670 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1671 | 
         
            +
                  yaml: 2.3.4
         
     | 
| 1672 | 
         
            +
                dev: true
         
     | 
| 1673 | 
         
            +
             
     | 
| 1674 | 
         
            +
              /postcss-nested@6.0.1(postcss@8.4.32):
         
     | 
| 1675 | 
         
            +
                resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
         
     | 
| 1676 | 
         
            +
                engines: {node: '>=12.0'}
         
     | 
| 1677 | 
         
            +
                peerDependencies:
         
     | 
| 1678 | 
         
            +
                  postcss: ^8.2.14
         
     | 
| 1679 | 
         
            +
                dependencies:
         
     | 
| 1680 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1681 | 
         
            +
                  postcss-selector-parser: 6.0.13
         
     | 
| 1682 | 
         
            +
                dev: true
         
     | 
| 1683 | 
         
            +
             
     | 
| 1684 | 
         
            +
              /postcss-selector-parser@6.0.13:
         
     | 
| 1685 | 
         
            +
                resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
         
     | 
| 1686 | 
         
            +
                engines: {node: '>=4'}
         
     | 
| 1687 | 
         
            +
                dependencies:
         
     | 
| 1688 | 
         
            +
                  cssesc: 3.0.0
         
     | 
| 1689 | 
         
            +
                  util-deprecate: 1.0.2
         
     | 
| 1690 | 
         
            +
                dev: true
         
     | 
| 1691 | 
         
            +
             
     | 
| 1692 | 
         
            +
              /postcss-value-parser@4.2.0:
         
     | 
| 1693 | 
         
            +
                resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
         
     | 
| 1694 | 
         
            +
                dev: true
         
     | 
| 1695 | 
         
            +
             
     | 
| 1696 | 
         
            +
              /postcss@8.4.32:
         
     | 
| 1697 | 
         
            +
                resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
         
     | 
| 1698 | 
         
            +
                engines: {node: ^10 || ^12 || >=14}
         
     | 
| 1699 | 
         
            +
                dependencies:
         
     | 
| 1700 | 
         
            +
                  nanoid: 3.3.7
         
     | 
| 1701 | 
         
            +
                  picocolors: 1.0.0
         
     | 
| 1702 | 
         
            +
                  source-map-js: 1.0.2
         
     | 
| 1703 | 
         
            +
             
     | 
| 1704 | 
         
            +
              /prelude-ls@1.2.1:
         
     | 
| 1705 | 
         
            +
                resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
         
     | 
| 1706 | 
         
            +
                engines: {node: '>= 0.8.0'}
         
     | 
| 1707 | 
         
            +
                dev: true
         
     | 
| 1708 | 
         
            +
             
     | 
| 1709 | 
         
            +
              /prettier@3.1.1:
         
     | 
| 1710 | 
         
            +
                resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==}
         
     | 
| 1711 | 
         
            +
                engines: {node: '>=14'}
         
     | 
| 1712 | 
         
            +
                hasBin: true
         
     | 
| 1713 | 
         
            +
                dev: true
         
     | 
| 1714 | 
         
            +
             
     | 
| 1715 | 
         
            +
              /punycode@2.3.1:
         
     | 
| 1716 | 
         
            +
                resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
         
     | 
| 1717 | 
         
            +
                engines: {node: '>=6'}
         
     | 
| 1718 | 
         
            +
                dev: true
         
     | 
| 1719 | 
         
            +
             
     | 
| 1720 | 
         
            +
              /queue-microtask@1.2.3:
         
     | 
| 1721 | 
         
            +
                resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
         
     | 
| 1722 | 
         
            +
                dev: true
         
     | 
| 1723 | 
         
            +
             
     | 
| 1724 | 
         
            +
              /quickselect@2.0.0:
         
     | 
| 1725 | 
         
            +
                resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
         
     | 
| 1726 | 
         
            +
                dev: false
         
     | 
| 1727 | 
         
            +
             
     | 
| 1728 | 
         
            +
              /rbush@3.0.1:
         
     | 
| 1729 | 
         
            +
                resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==}
         
     | 
| 1730 | 
         
            +
                dependencies:
         
     | 
| 1731 | 
         
            +
                  quickselect: 2.0.0
         
     | 
| 1732 | 
         
            +
                dev: false
         
     | 
| 1733 | 
         
            +
             
     | 
| 1734 | 
         
            +
              /read-cache@1.0.0:
         
     | 
| 1735 | 
         
            +
                resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
         
     | 
| 1736 | 
         
            +
                dependencies:
         
     | 
| 1737 | 
         
            +
                  pify: 2.3.0
         
     | 
| 1738 | 
         
            +
                dev: true
         
     | 
| 1739 | 
         
            +
             
     | 
| 1740 | 
         
            +
              /readdirp@3.6.0:
         
     | 
| 1741 | 
         
            +
                resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
         
     | 
| 1742 | 
         
            +
                engines: {node: '>=8.10.0'}
         
     | 
| 1743 | 
         
            +
                dependencies:
         
     | 
| 1744 | 
         
            +
                  picomatch: 2.3.1
         
     | 
| 1745 | 
         
            +
                dev: true
         
     | 
| 1746 | 
         
            +
             
     | 
| 1747 | 
         
            +
              /resolve-from@4.0.0:
         
     | 
| 1748 | 
         
            +
                resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
         
     | 
| 1749 | 
         
            +
                engines: {node: '>=4'}
         
     | 
| 1750 | 
         
            +
                dev: true
         
     | 
| 1751 | 
         
            +
             
     | 
| 1752 | 
         
            +
              /resolve@1.22.8:
         
     | 
| 1753 | 
         
            +
                resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
         
     | 
| 1754 | 
         
            +
                hasBin: true
         
     | 
| 1755 | 
         
            +
                dependencies:
         
     | 
| 1756 | 
         
            +
                  is-core-module: 2.13.1
         
     | 
| 1757 | 
         
            +
                  path-parse: 1.0.7
         
     | 
| 1758 | 
         
            +
                  supports-preserve-symlinks-flag: 1.0.0
         
     | 
| 1759 | 
         
            +
                dev: true
         
     | 
| 1760 | 
         
            +
             
     | 
| 1761 | 
         
            +
              /reusify@1.0.4:
         
     | 
| 1762 | 
         
            +
                resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
         
     | 
| 1763 | 
         
            +
                engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
         
     | 
| 1764 | 
         
            +
                dev: true
         
     | 
| 1765 | 
         
            +
             
     | 
| 1766 | 
         
            +
              /rimraf@3.0.2:
         
     | 
| 1767 | 
         
            +
                resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
         
     | 
| 1768 | 
         
            +
                hasBin: true
         
     | 
| 1769 | 
         
            +
                dependencies:
         
     | 
| 1770 | 
         
            +
                  glob: 7.2.3
         
     | 
| 1771 | 
         
            +
                dev: true
         
     | 
| 1772 | 
         
            +
             
     | 
| 1773 | 
         
            +
              /rollup@4.9.1:
         
     | 
| 1774 | 
         
            +
                resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
         
     | 
| 1775 | 
         
            +
                engines: {node: '>=18.0.0', npm: '>=8.0.0'}
         
     | 
| 1776 | 
         
            +
                hasBin: true
         
     | 
| 1777 | 
         
            +
                optionalDependencies:
         
     | 
| 1778 | 
         
            +
                  '@rollup/rollup-android-arm-eabi': 4.9.1
         
     | 
| 1779 | 
         
            +
                  '@rollup/rollup-android-arm64': 4.9.1
         
     | 
| 1780 | 
         
            +
                  '@rollup/rollup-darwin-arm64': 4.9.1
         
     | 
| 1781 | 
         
            +
                  '@rollup/rollup-darwin-x64': 4.9.1
         
     | 
| 1782 | 
         
            +
                  '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
         
     | 
| 1783 | 
         
            +
                  '@rollup/rollup-linux-arm64-gnu': 4.9.1
         
     | 
| 1784 | 
         
            +
                  '@rollup/rollup-linux-arm64-musl': 4.9.1
         
     | 
| 1785 | 
         
            +
                  '@rollup/rollup-linux-riscv64-gnu': 4.9.1
         
     | 
| 1786 | 
         
            +
                  '@rollup/rollup-linux-x64-gnu': 4.9.1
         
     | 
| 1787 | 
         
            +
                  '@rollup/rollup-linux-x64-musl': 4.9.1
         
     | 
| 1788 | 
         
            +
                  '@rollup/rollup-win32-arm64-msvc': 4.9.1
         
     | 
| 1789 | 
         
            +
                  '@rollup/rollup-win32-ia32-msvc': 4.9.1
         
     | 
| 1790 | 
         
            +
                  '@rollup/rollup-win32-x64-msvc': 4.9.1
         
     | 
| 1791 | 
         
            +
                  fsevents: 2.3.3
         
     | 
| 1792 | 
         
            +
                dev: true
         
     | 
| 1793 | 
         
            +
             
     | 
| 1794 | 
         
            +
              /run-parallel@1.2.0:
         
     | 
| 1795 | 
         
            +
                resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
         
     | 
| 1796 | 
         
            +
                dependencies:
         
     | 
| 1797 | 
         
            +
                  queue-microtask: 1.2.3
         
     | 
| 1798 | 
         
            +
                dev: true
         
     | 
| 1799 | 
         
            +
             
     | 
| 1800 | 
         
            +
              /semver@7.5.4:
         
     | 
| 1801 | 
         
            +
                resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
         
     | 
| 1802 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1803 | 
         
            +
                hasBin: true
         
     | 
| 1804 | 
         
            +
                dependencies:
         
     | 
| 1805 | 
         
            +
                  lru-cache: 6.0.0
         
     | 
| 1806 | 
         
            +
                dev: true
         
     | 
| 1807 | 
         
            +
             
     | 
| 1808 | 
         
            +
              /shebang-command@2.0.0:
         
     | 
| 1809 | 
         
            +
                resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
         
     | 
| 1810 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1811 | 
         
            +
                dependencies:
         
     | 
| 1812 | 
         
            +
                  shebang-regex: 3.0.0
         
     | 
| 1813 | 
         
            +
                dev: true
         
     | 
| 1814 | 
         
            +
             
     | 
| 1815 | 
         
            +
              /shebang-regex@3.0.0:
         
     | 
| 1816 | 
         
            +
                resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
         
     | 
| 1817 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1818 | 
         
            +
                dev: true
         
     | 
| 1819 | 
         
            +
             
     | 
| 1820 | 
         
            +
              /source-map-js@1.0.2:
         
     | 
| 1821 | 
         
            +
                resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
         
     | 
| 1822 | 
         
            +
                engines: {node: '>=0.10.0'}
         
     | 
| 1823 | 
         
            +
             
     | 
| 1824 | 
         
            +
              /splaytree@3.1.2:
         
     | 
| 1825 | 
         
            +
                resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==}
         
     | 
| 1826 | 
         
            +
                dev: false
         
     | 
| 1827 | 
         
            +
             
     | 
| 1828 | 
         
            +
              /strip-ansi@6.0.1:
         
     | 
| 1829 | 
         
            +
                resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
         
     | 
| 1830 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1831 | 
         
            +
                dependencies:
         
     | 
| 1832 | 
         
            +
                  ansi-regex: 5.0.1
         
     | 
| 1833 | 
         
            +
                dev: true
         
     | 
| 1834 | 
         
            +
             
     | 
| 1835 | 
         
            +
              /strip-json-comments@3.1.1:
         
     | 
| 1836 | 
         
            +
                resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
         
     | 
| 1837 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1838 | 
         
            +
                dev: true
         
     | 
| 1839 | 
         
            +
             
     | 
| 1840 | 
         
            +
              /sucrase@3.34.0:
         
     | 
| 1841 | 
         
            +
                resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
         
     | 
| 1842 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1843 | 
         
            +
                hasBin: true
         
     | 
| 1844 | 
         
            +
                dependencies:
         
     | 
| 1845 | 
         
            +
                  '@jridgewell/gen-mapping': 0.3.3
         
     | 
| 1846 | 
         
            +
                  commander: 4.1.1
         
     | 
| 1847 | 
         
            +
                  glob: 7.1.6
         
     | 
| 1848 | 
         
            +
                  lines-and-columns: 1.2.4
         
     | 
| 1849 | 
         
            +
                  mz: 2.7.0
         
     | 
| 1850 | 
         
            +
                  pirates: 4.0.6
         
     | 
| 1851 | 
         
            +
                  ts-interface-checker: 0.1.13
         
     | 
| 1852 | 
         
            +
                dev: true
         
     | 
| 1853 | 
         
            +
             
     | 
| 1854 | 
         
            +
              /supports-color@7.2.0:
         
     | 
| 1855 | 
         
            +
                resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
         
     | 
| 1856 | 
         
            +
                engines: {node: '>=8'}
         
     | 
| 1857 | 
         
            +
                dependencies:
         
     | 
| 1858 | 
         
            +
                  has-flag: 4.0.0
         
     | 
| 1859 | 
         
            +
                dev: true
         
     | 
| 1860 | 
         
            +
             
     | 
| 1861 | 
         
            +
              /supports-preserve-symlinks-flag@1.0.0:
         
     | 
| 1862 | 
         
            +
                resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
         
     | 
| 1863 | 
         
            +
                engines: {node: '>= 0.4'}
         
     | 
| 1864 | 
         
            +
                dev: true
         
     | 
| 1865 | 
         
            +
             
     | 
| 1866 | 
         
            +
              /tailwindcss@3.4.0:
         
     | 
| 1867 | 
         
            +
                resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==}
         
     | 
| 1868 | 
         
            +
                engines: {node: '>=14.0.0'}
         
     | 
| 1869 | 
         
            +
                hasBin: true
         
     | 
| 1870 | 
         
            +
                dependencies:
         
     | 
| 1871 | 
         
            +
                  '@alloc/quick-lru': 5.2.0
         
     | 
| 1872 | 
         
            +
                  arg: 5.0.2
         
     | 
| 1873 | 
         
            +
                  chokidar: 3.5.3
         
     | 
| 1874 | 
         
            +
                  didyoumean: 1.2.2
         
     | 
| 1875 | 
         
            +
                  dlv: 1.1.3
         
     | 
| 1876 | 
         
            +
                  fast-glob: 3.3.2
         
     | 
| 1877 | 
         
            +
                  glob-parent: 6.0.2
         
     | 
| 1878 | 
         
            +
                  is-glob: 4.0.3
         
     | 
| 1879 | 
         
            +
                  jiti: 1.21.0
         
     | 
| 1880 | 
         
            +
                  lilconfig: 2.1.0
         
     | 
| 1881 | 
         
            +
                  micromatch: 4.0.5
         
     | 
| 1882 | 
         
            +
                  normalize-path: 3.0.0
         
     | 
| 1883 | 
         
            +
                  object-hash: 3.0.0
         
     | 
| 1884 | 
         
            +
                  picocolors: 1.0.0
         
     | 
| 1885 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1886 | 
         
            +
                  postcss-import: 15.1.0(postcss@8.4.32)
         
     | 
| 1887 | 
         
            +
                  postcss-js: 4.0.1(postcss@8.4.32)
         
     | 
| 1888 | 
         
            +
                  postcss-load-config: 4.0.2(postcss@8.4.32)
         
     | 
| 1889 | 
         
            +
                  postcss-nested: 6.0.1(postcss@8.4.32)
         
     | 
| 1890 | 
         
            +
                  postcss-selector-parser: 6.0.13
         
     | 
| 1891 | 
         
            +
                  resolve: 1.22.8
         
     | 
| 1892 | 
         
            +
                  sucrase: 3.34.0
         
     | 
| 1893 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 1894 | 
         
            +
                  - ts-node
         
     | 
| 1895 | 
         
            +
                dev: true
         
     | 
| 1896 | 
         
            +
             
     | 
| 1897 | 
         
            +
              /text-table@0.2.0:
         
     | 
| 1898 | 
         
            +
                resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
         
     | 
| 1899 | 
         
            +
                dev: true
         
     | 
| 1900 | 
         
            +
             
     | 
| 1901 | 
         
            +
              /thenify-all@1.6.0:
         
     | 
| 1902 | 
         
            +
                resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
         
     | 
| 1903 | 
         
            +
                engines: {node: '>=0.8'}
         
     | 
| 1904 | 
         
            +
                dependencies:
         
     | 
| 1905 | 
         
            +
                  thenify: 3.3.1
         
     | 
| 1906 | 
         
            +
                dev: true
         
     | 
| 1907 | 
         
            +
             
     | 
| 1908 | 
         
            +
              /thenify@3.3.1:
         
     | 
| 1909 | 
         
            +
                resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
         
     | 
| 1910 | 
         
            +
                dependencies:
         
     | 
| 1911 | 
         
            +
                  any-promise: 1.3.0
         
     | 
| 1912 | 
         
            +
                dev: true
         
     | 
| 1913 | 
         
            +
             
     | 
| 1914 | 
         
            +
              /to-fast-properties@2.0.0:
         
     | 
| 1915 | 
         
            +
                resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
         
     | 
| 1916 | 
         
            +
                engines: {node: '>=4'}
         
     | 
| 1917 | 
         
            +
             
     | 
| 1918 | 
         
            +
              /to-regex-range@5.0.1:
         
     | 
| 1919 | 
         
            +
                resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
         
     | 
| 1920 | 
         
            +
                engines: {node: '>=8.0'}
         
     | 
| 1921 | 
         
            +
                dependencies:
         
     | 
| 1922 | 
         
            +
                  is-number: 7.0.0
         
     | 
| 1923 | 
         
            +
                dev: true
         
     | 
| 1924 | 
         
            +
             
     | 
| 1925 | 
         
            +
              /ts-interface-checker@0.1.13:
         
     | 
| 1926 | 
         
            +
                resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
         
     | 
| 1927 | 
         
            +
                dev: true
         
     | 
| 1928 | 
         
            +
             
     | 
| 1929 | 
         
            +
              /type-check@0.4.0:
         
     | 
| 1930 | 
         
            +
                resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
         
     | 
| 1931 | 
         
            +
                engines: {node: '>= 0.8.0'}
         
     | 
| 1932 | 
         
            +
                dependencies:
         
     | 
| 1933 | 
         
            +
                  prelude-ls: 1.2.1
         
     | 
| 1934 | 
         
            +
                dev: true
         
     | 
| 1935 | 
         
            +
             
     | 
| 1936 | 
         
            +
              /type-fest@0.20.2:
         
     | 
| 1937 | 
         
            +
                resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
         
     | 
| 1938 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 1939 | 
         
            +
                dev: true
         
     | 
| 1940 | 
         
            +
             
     | 
| 1941 | 
         
            +
              /undici-types@5.26.5:
         
     | 
| 1942 | 
         
            +
                resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
         
     | 
| 1943 | 
         
            +
                dev: true
         
     | 
| 1944 | 
         
            +
             
     | 
| 1945 | 
         
            +
              /update-browserslist-db@1.0.13(browserslist@4.22.2):
         
     | 
| 1946 | 
         
            +
                resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
         
     | 
| 1947 | 
         
            +
                hasBin: true
         
     | 
| 1948 | 
         
            +
                peerDependencies:
         
     | 
| 1949 | 
         
            +
                  browserslist: '>= 4.21.0'
         
     | 
| 1950 | 
         
            +
                dependencies:
         
     | 
| 1951 | 
         
            +
                  browserslist: 4.22.2
         
     | 
| 1952 | 
         
            +
                  escalade: 3.1.1
         
     | 
| 1953 | 
         
            +
                  picocolors: 1.0.0
         
     | 
| 1954 | 
         
            +
                dev: true
         
     | 
| 1955 | 
         
            +
             
     | 
| 1956 | 
         
            +
              /uri-js@4.4.1:
         
     | 
| 1957 | 
         
            +
                resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
         
     | 
| 1958 | 
         
            +
                dependencies:
         
     | 
| 1959 | 
         
            +
                  punycode: 2.3.1
         
     | 
| 1960 | 
         
            +
                dev: true
         
     | 
| 1961 | 
         
            +
             
     | 
| 1962 | 
         
            +
              /util-deprecate@1.0.2:
         
     | 
| 1963 | 
         
            +
                resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
         
     | 
| 1964 | 
         
            +
                dev: true
         
     | 
| 1965 | 
         
            +
             
     | 
| 1966 | 
         
            +
              /vite@5.0.10(@types/node@20.10.5):
         
     | 
| 1967 | 
         
            +
                resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
         
     | 
| 1968 | 
         
            +
                engines: {node: ^18.0.0 || >=20.0.0}
         
     | 
| 1969 | 
         
            +
                hasBin: true
         
     | 
| 1970 | 
         
            +
                peerDependencies:
         
     | 
| 1971 | 
         
            +
                  '@types/node': ^18.0.0 || >=20.0.0
         
     | 
| 1972 | 
         
            +
                  less: '*'
         
     | 
| 1973 | 
         
            +
                  lightningcss: ^1.21.0
         
     | 
| 1974 | 
         
            +
                  sass: '*'
         
     | 
| 1975 | 
         
            +
                  stylus: '*'
         
     | 
| 1976 | 
         
            +
                  sugarss: '*'
         
     | 
| 1977 | 
         
            +
                  terser: ^5.4.0
         
     | 
| 1978 | 
         
            +
                peerDependenciesMeta:
         
     | 
| 1979 | 
         
            +
                  '@types/node':
         
     | 
| 1980 | 
         
            +
                    optional: true
         
     | 
| 1981 | 
         
            +
                  less:
         
     | 
| 1982 | 
         
            +
                    optional: true
         
     | 
| 1983 | 
         
            +
                  lightningcss:
         
     | 
| 1984 | 
         
            +
                    optional: true
         
     | 
| 1985 | 
         
            +
                  sass:
         
     | 
| 1986 | 
         
            +
                    optional: true
         
     | 
| 1987 | 
         
            +
                  stylus:
         
     | 
| 1988 | 
         
            +
                    optional: true
         
     | 
| 1989 | 
         
            +
                  sugarss:
         
     | 
| 1990 | 
         
            +
                    optional: true
         
     | 
| 1991 | 
         
            +
                  terser:
         
     | 
| 1992 | 
         
            +
                    optional: true
         
     | 
| 1993 | 
         
            +
                dependencies:
         
     | 
| 1994 | 
         
            +
                  '@types/node': 20.10.5
         
     | 
| 1995 | 
         
            +
                  esbuild: 0.19.10
         
     | 
| 1996 | 
         
            +
                  postcss: 8.4.32
         
     | 
| 1997 | 
         
            +
                  rollup: 4.9.1
         
     | 
| 1998 | 
         
            +
                optionalDependencies:
         
     | 
| 1999 | 
         
            +
                  fsevents: 2.3.3
         
     | 
| 2000 | 
         
            +
                dev: true
         
     | 
| 2001 | 
         
            +
             
     | 
| 2002 | 
         
            +
              /vue-eslint-parser@9.3.2(eslint@8.56.0):
         
     | 
| 2003 | 
         
            +
                resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==}
         
     | 
| 2004 | 
         
            +
                engines: {node: ^14.17.0 || >=16.0.0}
         
     | 
| 2005 | 
         
            +
                peerDependencies:
         
     | 
| 2006 | 
         
            +
                  eslint: '>=6.0.0'
         
     | 
| 2007 | 
         
            +
                dependencies:
         
     | 
| 2008 | 
         
            +
                  debug: 4.3.4
         
     | 
| 2009 | 
         
            +
                  eslint: 8.56.0
         
     | 
| 2010 | 
         
            +
                  eslint-scope: 7.2.2
         
     | 
| 2011 | 
         
            +
                  eslint-visitor-keys: 3.4.3
         
     | 
| 2012 | 
         
            +
                  espree: 9.6.1
         
     | 
| 2013 | 
         
            +
                  esquery: 1.5.0
         
     | 
| 2014 | 
         
            +
                  lodash: 4.17.21
         
     | 
| 2015 | 
         
            +
                  semver: 7.5.4
         
     | 
| 2016 | 
         
            +
                transitivePeerDependencies:
         
     | 
| 2017 | 
         
            +
                  - supports-color
         
     | 
| 2018 | 
         
            +
                dev: true
         
     | 
| 2019 | 
         
            +
             
     | 
| 2020 | 
         
            +
              /vue@3.3.13:
         
     | 
| 2021 | 
         
            +
                resolution: {integrity: sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==}
         
     | 
| 2022 | 
         
            +
                peerDependencies:
         
     | 
| 2023 | 
         
            +
                  typescript: '*'
         
     | 
| 2024 | 
         
            +
                peerDependenciesMeta:
         
     | 
| 2025 | 
         
            +
                  typescript:
         
     | 
| 2026 | 
         
            +
                    optional: true
         
     | 
| 2027 | 
         
            +
                dependencies:
         
     | 
| 2028 | 
         
            +
                  '@vue/compiler-dom': 3.3.13
         
     | 
| 2029 | 
         
            +
                  '@vue/compiler-sfc': 3.3.13
         
     | 
| 2030 | 
         
            +
                  '@vue/runtime-dom': 3.3.13
         
     | 
| 2031 | 
         
            +
                  '@vue/server-renderer': 3.3.13(vue@3.3.13)
         
     | 
| 2032 | 
         
            +
                  '@vue/shared': 3.3.13
         
     | 
| 2033 | 
         
            +
             
     | 
| 2034 | 
         
            +
              /which@2.0.2:
         
     | 
| 2035 | 
         
            +
                resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
         
     | 
| 2036 | 
         
            +
                engines: {node: '>= 8'}
         
     | 
| 2037 | 
         
            +
                hasBin: true
         
     | 
| 2038 | 
         
            +
                dependencies:
         
     | 
| 2039 | 
         
            +
                  isexe: 2.0.0
         
     | 
| 2040 | 
         
            +
                dev: true
         
     | 
| 2041 | 
         
            +
             
     | 
| 2042 | 
         
            +
              /wrappy@1.0.2:
         
     | 
| 2043 | 
         
            +
                resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
         
     | 
| 2044 | 
         
            +
                dev: true
         
     | 
| 2045 | 
         
            +
             
     | 
| 2046 | 
         
            +
              /xml-name-validator@4.0.0:
         
     | 
| 2047 | 
         
            +
                resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
         
     | 
| 2048 | 
         
            +
                engines: {node: '>=12'}
         
     | 
| 2049 | 
         
            +
                dev: true
         
     | 
| 2050 | 
         
            +
             
     | 
| 2051 | 
         
            +
              /yallist@4.0.0:
         
     | 
| 2052 | 
         
            +
                resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
         
     | 
| 2053 | 
         
            +
                dev: true
         
     | 
| 2054 | 
         
            +
             
     | 
| 2055 | 
         
            +
              /yaml@2.3.4:
         
     | 
| 2056 | 
         
            +
                resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
         
     | 
| 2057 | 
         
            +
                engines: {node: '>= 14'}
         
     | 
| 2058 | 
         
            +
                dev: true
         
     | 
| 2059 | 
         
            +
             
     | 
| 2060 | 
         
            +
              /yocto-queue@0.1.0:
         
     | 
| 2061 | 
         
            +
                resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
         
     | 
| 2062 | 
         
            +
                engines: {node: '>=10'}
         
     | 
| 2063 | 
         
            +
                dev: true
         
     | 
    	
        static/postcss.config.js
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            export default {
         
     | 
| 2 | 
         
            +
              plugins: {
         
     | 
| 3 | 
         
            +
                'postcss-import': {},
         
     | 
| 4 | 
         
            +
                tailwindcss: {},
         
     | 
| 5 | 
         
            +
                autoprefixer: {},
         
     | 
| 6 | 
         
            +
              },
         
     | 
| 7 | 
         
            +
            }
         
     | 
    	
        static/public/api-docs.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/apple-touch-icon.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/blog.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/favicon.ico
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/home-page.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/icon-192.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/icon.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/loader.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/login.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/logout.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/manifest.webmanifest
    ADDED
    
    | 
         @@ -0,0 +1,6 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            {
         
     | 
| 2 | 
         
            +
              "icons": [
         
     | 
| 3 | 
         
            +
                { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
         
     | 
| 4 | 
         
            +
                { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" }
         
     | 
| 5 | 
         
            +
              ]
         
     | 
| 6 | 
         
            +
            }
         
     | 
    	
        static/public/marker-icon-exclude-2x.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/marker-icon-exclude.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/marker-icon-include-2x.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/marker-icon-include.png
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/marker-shadow.png
    ADDED
    
    
											 
									 | 
									
								
    	
        static/public/prediction-map-bw.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/public/user-profile.svg
    ADDED
    
    | 
											 | 
									
								
    	
        static/src/App.vue
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <PageLayout page-title="Prediction map page">
         
     | 
| 3 | 
         
            +
                <div>
         
     | 
| 4 | 
         
            +
                  <div id="map-container-md">
         
     | 
| 5 | 
         
            +
                    <PredictionMap
         
     | 
| 6 | 
         
            +
                        :mapName="mapName"
         
     | 
| 7 | 
         
            +
                        :mapBounds='[{
         
     | 
| 8 | 
         
            +
                                "lat": 46.235421781941776,
         
     | 
| 9 | 
         
            +
                                "lng": 9.49699401855469
         
     | 
| 10 | 
         
            +
                            }, {
         
     | 
| 11 | 
         
            +
                                "lat": 46.1351347810282,
         
     | 
| 12 | 
         
            +
                                "lng": 9.32121276855469
         
     | 
| 13 | 
         
            +
                          }]'
         
     | 
| 14 | 
         
            +
                        description="This page displays predictions made with a remote machine learning model living within an AWS Lambda..."
         
     | 
| 15 | 
         
            +
                    />
         
     | 
| 16 | 
         
            +
                  </div>
         
     | 
| 17 | 
         
            +
                </div>
         
     | 
| 18 | 
         
            +
              </PageLayout>
         
     | 
| 19 | 
         
            +
            </template>
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
            <script setup lang="ts">
         
     | 
| 22 | 
         
            +
            import { ref } from 'vue'
         
     | 
| 23 | 
         
            +
             
     | 
| 24 | 
         
            +
            import PredictionMap from '@/components/PagePredictionMap.vue'
         
     | 
| 25 | 
         
            +
            import PageLayout from '@/components/PageLayout.vue'
         
     | 
| 26 | 
         
            +
             
     | 
| 27 | 
         
            +
            const mapName = ref('prediction-map')
         
     | 
| 28 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/PageFooter.vue
    ADDED
    
    | 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <!-- style 'z-index: 1001' here is needed to avoid override from leafletjs css -->
         
     | 
| 3 | 
         
            +
              <footer class="fixed bottom-0 w-full bg-gray-200 pl-2 font-light text-xs" style="z-index: 9999;">
         
     | 
| 4 | 
         
            +
                <p>
         
     | 
| 5 | 
         
            +
                  <span><PageFooterHyperlink path="/">SamGIS</PageFooterHyperlink>: An inference machine learning POC applied to GIS thanks to
         
     | 
| 6 | 
         
            +
                    <PageFooterHyperlink path="https://github.com/vietanhdev/samexporter/">SAM Exporter</PageFooterHyperlink>
         
     | 
| 7 | 
         
            +
                    and inspired by
         
     | 
| 8 | 
         
            +
                    <PageFooterHyperlink path="https://samgeo.gishub.org/">Segment Geospatial</PageFooterHyperlink>
         
     | 
| 9 | 
         
            +
                  </span>
         
     | 
| 10 | 
         
            +
                </p>
         
     | 
| 11 | 
         
            +
              </footer>
         
     | 
| 12 | 
         
            +
            </template>
         
     | 
| 13 | 
         
            +
             
     | 
| 14 | 
         
            +
            <script setup lang="ts">
         
     | 
| 15 | 
         
            +
            import PageFooterHyperlink from "@/components/PageFooterHyperlink.vue";
         
     | 
| 16 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/PageFooterHyperlink.vue
    ADDED
    
    | 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <a
         
     | 
| 3 | 
         
            +
                :href="props.path"
         
     | 
| 4 | 
         
            +
                class="underline"
         
     | 
| 5 | 
         
            +
                target="_blank"
         
     | 
| 6 | 
         
            +
                rel="noopener noreferrer"
         
     | 
| 7 | 
         
            +
              >
         
     | 
| 8 | 
         
            +
                <slot />
         
     | 
| 9 | 
         
            +
              </a>
         
     | 
| 10 | 
         
            +
            </template>
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            <script setup lang="ts">
         
     | 
| 13 | 
         
            +
            const props = defineProps<{
         
     | 
| 14 | 
         
            +
              path: string
         
     | 
| 15 | 
         
            +
            }>()
         
     | 
| 16 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/PageLayout.vue
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <div class="relative min-h-screen lg:flex">
         
     | 
| 3 | 
         
            +
                <!-- Sidebar -->
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
                <main id="content" class="flex-1 z-1 pb-12 ml-[3.3rem] lg:ml-0 mr-4 overflow-y-auto md:pl-1 lg:h-screen">
         
     | 
| 6 | 
         
            +
                  <header class="hidden items-center justify-between h-10 ml-2 landscape:md:flex portrait:sd:flex portrait:md:h-12 bg-gray-200 border-b">
         
     | 
| 7 | 
         
            +
                    <h2 class="hidden sd:text-sm ml-2 md:block md:text-2xl">{{  props.pageTitle }}</h2>
         
     | 
| 8 | 
         
            +
                  </header>
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
                  <div class="">
         
     | 
| 11 | 
         
            +
                    <slot></slot>
         
     | 
| 12 | 
         
            +
                  </div>
         
     | 
| 13 | 
         
            +
             
     | 
| 14 | 
         
            +
                  <div class="bottom-0 w-full text-black">
         
     | 
| 15 | 
         
            +
                    <Footer></Footer>
         
     | 
| 16 | 
         
            +
                  </div>
         
     | 
| 17 | 
         
            +
                </main>
         
     | 
| 18 | 
         
            +
              </div>
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
            </template>
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            <script setup lang="ts">
         
     | 
| 23 | 
         
            +
            import Footer from "@/components/PageFooter.vue"
         
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
            const props = defineProps<{
         
     | 
| 26 | 
         
            +
              pageTitle: string
         
     | 
| 27 | 
         
            +
            }>()
         
     | 
| 28 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/PagePredictionMap.vue
    ADDED
    
    | 
         @@ -0,0 +1,224 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <div class="h-auto">
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
                <div class="grid grid-cols-1 2xl:grid-cols-5 lg:gap-1 lg:border-r">
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
                  <div class="lg:border-r lg:col-span-3">
         
     | 
| 7 | 
         
            +
                    <div id="id-map-cont" class="ml-2 mt-2 md:ml-4 md:mr-4">
         
     | 
| 8 | 
         
            +
                      <p class="hidden lg:block">{{ description }}</p>
         
     | 
| 9 | 
         
            +
                      <div class="w-full md:pt-1 md:pb-1 lg:hidden portrait:xl:hidden">
         
     | 
| 10 | 
         
            +
                        <ButtonMapSendRequest
         
     | 
| 11 | 
         
            +
                          class="h-8 text-sm font-extralight min-w-[180px] max-w-[180px]"
         
     | 
| 12 | 
         
            +
                          :current-base-map-name="currentBaseMapNameRef"
         
     | 
| 13 | 
         
            +
                          :map="map"
         
     | 
| 14 | 
         
            +
                          :prompts-array="promptsArrayRef"
         
     | 
| 15 | 
         
            +
                          :response-message="responseMessageRef"
         
     | 
| 16 | 
         
            +
                          :send-m-l-request="sendMLRequest"
         
     | 
| 17 | 
         
            +
                          :waiting-string="waitingString"
         
     | 
| 18 | 
         
            +
                        />
         
     | 
| 19 | 
         
            +
                      </div>
         
     | 
| 20 | 
         
            +
                      <div id="map" class="map-predictions" />
         
     | 
| 21 | 
         
            +
                      <ButtonMapSendRequest
         
     | 
| 22 | 
         
            +
                        class="h-8 min-w-[240px] max-w-[240px] mt-2 mb-2 hidden sd:h-14 lg:block portrait:xl:block"
         
     | 
| 23 | 
         
            +
                        :current-base-map-name="currentBaseMapNameRef"
         
     | 
| 24 | 
         
            +
                        :map="map"
         
     | 
| 25 | 
         
            +
                        :prompts-array="promptsArrayRef"
         
     | 
| 26 | 
         
            +
                        :response-message="responseMessageRef"
         
     | 
| 27 | 
         
            +
                        :send-m-l-request="sendMLRequest"
         
     | 
| 28 | 
         
            +
                        :waiting-string="waitingString"
         
     | 
| 29 | 
         
            +
                      />
         
     | 
| 30 | 
         
            +
             
     | 
| 31 | 
         
            +
                    </div>
         
     | 
| 32 | 
         
            +
                  </div>
         
     | 
| 33 | 
         
            +
             
     | 
| 34 | 
         
            +
                  <div class="lg:col-span-2">
         
     | 
| 35 | 
         
            +
                    <div class="lg:pl-2 lg:pr-2 lg:border-l lg:border-3">
         
     | 
| 36 | 
         
            +
             
     | 
| 37 | 
         
            +
                      <h1>Map Info</h1>
         
     | 
| 38 | 
         
            +
                      <div class="grid grid-cols-1 md:grid-cols-3">
         
     | 
| 39 | 
         
            +
                        <StatsGrid :stats-array="[
         
     | 
| 40 | 
         
            +
                          {statName: 'current Zoom', statValue: currentZoomRef},
         
     | 
| 41 | 
         
            +
                          {statName: 'current map name/type', statValue: currentBaseMapNameRef},
         
     | 
| 42 | 
         
            +
                          {statName: 'prompt: points/rectangles number', statValue: promptsArrayRef.length},
         
     | 
| 43 | 
         
            +
                        ]" />
         
     | 
| 44 | 
         
            +
                      </div>
         
     | 
| 45 | 
         
            +
             
     | 
| 46 | 
         
            +
                      <div v-if="responseMessageRef === waitingString" />
         
     | 
| 47 | 
         
            +
                      <h2 v-else-if="responseMessageRef || responseMessageRef == '-'" class="text-lg text-red-600">{{ responseMessageRef }}</h2>
         
     | 
| 48 | 
         
            +
                      <div v-else>
         
     | 
| 49 | 
         
            +
                        <div class="grid grid-cols-1 md:grid-cols-3">
         
     | 
| 50 | 
         
            +
                          <StatsGrid :stats-array="[
         
     | 
| 51 | 
         
            +
                              {statName: 'request duration', statValue: `${durationRef.toFixed(2)}s`},
         
     | 
| 52 | 
         
            +
                              {statName: 'polygons number', statValue: numberOfPolygonsRef},
         
     | 
| 53 | 
         
            +
                              {statName: 'predicted masks number', statValue: numberOfPredictedMasksRef},
         
     | 
| 54 | 
         
            +
                            ]" />
         
     | 
| 55 | 
         
            +
                        </div>
         
     | 
| 56 | 
         
            +
                      </div>
         
     | 
| 57 | 
         
            +
                    </div>
         
     | 
| 58 | 
         
            +
             
     | 
| 59 | 
         
            +
                    <h1>ML request prompt</h1>
         
     | 
| 60 | 
         
            +
                    <div v-if="promptsArrayRef.filter(el => {return el.type === 'point'}).length > 0">
         
     | 
| 61 | 
         
            +
                      <TableGenericComponent
         
     | 
| 62 | 
         
            +
                        :header="['id', 'data', 'label']"
         
     | 
| 63 | 
         
            +
                        :rows="applyFnToObjectWithinArray(promptsArrayRef.filter(el => {return el.type === 'point'}))"
         
     | 
| 64 | 
         
            +
                        title="Points"
         
     | 
| 65 | 
         
            +
                        row-key="id"
         
     | 
| 66 | 
         
            +
                      />
         
     | 
| 67 | 
         
            +
                    </div>
         
     | 
| 68 | 
         
            +
                    <br />
         
     | 
| 69 | 
         
            +
                    <div v-if="promptsArrayRef.filter(el => {return el.type === 'rectangle'}).length > 0">
         
     | 
| 70 | 
         
            +
                      <TableGenericComponent
         
     | 
| 71 | 
         
            +
                        :header="['id', 'data_ne', 'data_sw']"
         
     | 
| 72 | 
         
            +
                        :rows="applyFnToObjectWithinArray(promptsArrayRef.filter(el => {return el.type === 'rectangle'}))"
         
     | 
| 73 | 
         
            +
                        title="Rectangles"
         
     | 
| 74 | 
         
            +
                        row-key="id"
         
     | 
| 75 | 
         
            +
                        class="2md:min-h-[100px]"
         
     | 
| 76 | 
         
            +
                      />
         
     | 
| 77 | 
         
            +
                    </div>
         
     | 
| 78 | 
         
            +
                  </div>
         
     | 
| 79 | 
         
            +
             
     | 
| 80 | 
         
            +
                </div>
         
     | 
| 81 | 
         
            +
              </div>
         
     | 
| 82 | 
         
            +
            </template>
         
     | 
| 83 | 
         
            +
             
     | 
| 84 | 
         
            +
            <script lang="ts" setup>
         
     | 
| 85 | 
         
            +
            import {
         
     | 
| 86 | 
         
            +
              control as LeafletControl,
         
     | 
| 87 | 
         
            +
              Evented as LEvented,
         
     | 
| 88 | 
         
            +
              geoJSON as LeafletGeoJSON,
         
     | 
| 89 | 
         
            +
              type LatLng,
         
     | 
| 90 | 
         
            +
              Map as LMap,
         
     | 
| 91 | 
         
            +
              map as LeafletMap,
         
     | 
| 92 | 
         
            +
              tileLayer,
         
     | 
| 93 | 
         
            +
              TileLayer as LTileLayer
         
     | 
| 94 | 
         
            +
            } from 'leaflet'
         
     | 
| 95 | 
         
            +
            import 'leaflet-providers'
         
     | 
| 96 | 
         
            +
            import '@geoman-io/leaflet-geoman-free'
         
     | 
| 97 | 
         
            +
            import { onMounted, ref, type Ref } from 'vue'
         
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
            import {
         
     | 
| 100 | 
         
            +
              durationRef,
         
     | 
| 101 | 
         
            +
              numberOfPolygonsRef,
         
     | 
| 102 | 
         
            +
              numberOfPredictedMasksRef,
         
     | 
| 103 | 
         
            +
              OpenStreetMap,
         
     | 
| 104 | 
         
            +
              prefix,
         
     | 
| 105 | 
         
            +
              responseMessageRef,
         
     | 
| 106 | 
         
            +
              Satellite,
         
     | 
| 107 | 
         
            +
              waitingString
         
     | 
| 108 | 
         
            +
            } from '@/components/constants'
         
     | 
| 109 | 
         
            +
            import {
         
     | 
| 110 | 
         
            +
              applyFnToObjectWithinArray,
         
     | 
| 111 | 
         
            +
              getExtentCurrentViewMapBBox,
         
     | 
| 112 | 
         
            +
              getGeoJSONRequest,
         
     | 
| 113 | 
         
            +
              getSelectedPointCoordinate,
         
     | 
| 114 | 
         
            +
              setGeomanControls,
         
     | 
| 115 | 
         
            +
              updateMapData
         
     | 
| 116 | 
         
            +
            } from '@/components/helpers'
         
     | 
| 117 | 
         
            +
            import type { IBodyLatLngPoints, IPointPrompt, IRectanglePrompt, SourceTileType } from '@/components/types';
         
     | 
| 118 | 
         
            +
            import StatsGrid from '@/components/StatsGrid.vue';
         
     | 
| 119 | 
         
            +
            import TableGenericComponent from '@/components/TableGenericComponent.vue';
         
     | 
| 120 | 
         
            +
            import ButtonMapSendRequest from '@/components/buttons/ButtonMapSendRequest.vue';
         
     | 
| 121 | 
         
            +
             
     | 
| 122 | 
         
            +
            const currentBaseMapNameRef = ref("")
         
     | 
| 123 | 
         
            +
            const currentMapBBoxRef = ref()
         
     | 
| 124 | 
         
            +
            const currentZoomRef = ref()
         
     | 
| 125 | 
         
            +
            const promptsArrayRef: Ref<Array<IPointPrompt | IRectanglePrompt>> = ref([])
         
     | 
| 126 | 
         
            +
            let map: LMap
         
     | 
| 127 | 
         
            +
            type ServiceTiles = {
         
     | 
| 128 | 
         
            +
              [key: SourceTileType]: LTileLayer;
         
     | 
| 129 | 
         
            +
            };
         
     | 
| 130 | 
         
            +
             
     | 
| 131 | 
         
            +
            const props = defineProps<{
         
     | 
| 132 | 
         
            +
              mapBounds: Array<LatLng>,
         
     | 
| 133 | 
         
            +
              mapName: string,
         
     | 
| 134 | 
         
            +
              description: string
         
     | 
| 135 | 
         
            +
            }>()
         
     | 
| 136 | 
         
            +
             
     | 
| 137 | 
         
            +
            const getPopupContentPoint = (leafletEvent: LEvented, label: number): HTMLDivElement => {
         
     | 
| 138 | 
         
            +
              let popupContent: HTMLDivElement = document.createElement('div')
         
     | 
| 139 | 
         
            +
              let currentPointLayer: LatLng = getSelectedPointCoordinate(leafletEvent)
         
     | 
| 140 | 
         
            +
             
     | 
| 141 | 
         
            +
              popupContent.innerHTML = `<span>lat:${JSON.stringify(currentPointLayer.lat)}<br/>`
         
     | 
| 142 | 
         
            +
              popupContent.innerHTML += `lng:${JSON.stringify(currentPointLayer.lng)}<br/>`
         
     | 
| 143 | 
         
            +
              popupContent.innerHTML += `label:${label}, id:${leafletEvent.layer._leaflet_id}</span>`
         
     | 
| 144 | 
         
            +
             
     | 
| 145 | 
         
            +
              const popupDiv: HTMLDivElement = document.createElement('div')
         
     | 
| 146 | 
         
            +
              popupDiv.className = 'leaflet-popup-content-inner'
         
     | 
| 147 | 
         
            +
              popupDiv.appendChild(popupContent)
         
     | 
| 148 | 
         
            +
             
     | 
| 149 | 
         
            +
              return popupDiv
         
     | 
| 150 | 
         
            +
            }
         
     | 
| 151 | 
         
            +
             
     | 
| 152 | 
         
            +
            const sendMLRequest = async (leafletMap: LMap, promptRequest: Array<IPointPrompt | IRectanglePrompt>, sourceType: SourceTileType = OpenStreetMap) => {
         
     | 
| 153 | 
         
            +
              if (map.pm.globalDragModeEnabled()) {
         
     | 
| 154 | 
         
            +
                map.pm.disableGlobalDragMode()
         
     | 
| 155 | 
         
            +
              }
         
     | 
| 156 | 
         
            +
              if (map.pm.globalEditModeEnabled()) {
         
     | 
| 157 | 
         
            +
                map.pm.disableGlobalEditMode()
         
     | 
| 158 | 
         
            +
              }
         
     | 
| 159 | 
         
            +
              const bodyRequest: IBodyLatLngPoints = {
         
     | 
| 160 | 
         
            +
                bbox: getExtentCurrentViewMapBBox(leafletMap),
         
     | 
| 161 | 
         
            +
                prompt: promptRequest,
         
     | 
| 162 | 
         
            +
                zoom: leafletMap.getZoom(),
         
     | 
| 163 | 
         
            +
                source_type: sourceType
         
     | 
| 164 | 
         
            +
              }
         
     | 
| 165 | 
         
            +
              try {
         
     | 
| 166 | 
         
            +
                const geojsonOutputOnMounted = await getGeoJSONRequest(bodyRequest, '/infer_samgis')
         
     | 
| 167 | 
         
            +
                const featureNew = LeafletGeoJSON(geojsonOutputOnMounted)
         
     | 
| 168 | 
         
            +
                leafletMap.addLayer(featureNew)
         
     | 
| 169 | 
         
            +
              } catch (errGeojsonOutputOnMounted) {
         
     | 
| 170 | 
         
            +
                console.error('sendMLRequest:: sourceType: ', sourceType)
         
     | 
| 171 | 
         
            +
                console.error('sendMLRequest:: promptRequest: ', promptRequest.length, '::', promptRequest)
         
     | 
| 172 | 
         
            +
                console.error('sendMLRequest:: bodyRequest => ', bodyRequest, "#")
         
     | 
| 173 | 
         
            +
                console.error("errGeojsonOutputOnMounted => ", errGeojsonOutputOnMounted)
         
     | 
| 174 | 
         
            +
              }
         
     | 
| 175 | 
         
            +
            }
         
     | 
| 176 | 
         
            +
             
     | 
| 177 | 
         
            +
            const updateZoomBboxMap = (localMap: LMap) => {
         
     | 
| 178 | 
         
            +
              currentZoomRef.value = localMap.getZoom()
         
     | 
| 179 | 
         
            +
              currentMapBBoxRef.value = getExtentCurrentViewMapBBox(localMap)
         
     | 
| 180 | 
         
            +
            }
         
     | 
| 181 | 
         
            +
             
     | 
| 182 | 
         
            +
            const getCurrentBasemap = (url: string, providersArray: ServiceTiles) => {
         
     | 
| 183 | 
         
            +
              for (const [key, value] of Object.entries(providersArray)) {
         
     | 
| 184 | 
         
            +
                if (value._url == url) {
         
     | 
| 185 | 
         
            +
                  return key
         
     | 
| 186 | 
         
            +
                }
         
     | 
| 187 | 
         
            +
              }
         
     | 
| 188 | 
         
            +
            }
         
     | 
| 189 | 
         
            +
             
     | 
| 190 | 
         
            +
            onMounted(async () => {
         
     | 
| 191 | 
         
            +
              const osmTile = tileLayer.provider(OpenStreetMap)
         
     | 
| 192 | 
         
            +
              let localVarSatellite: SourceTileType = import.meta.env.VITE_SATELLITE_NAME ? String(import.meta.env.VITE_SATELLITE_NAME) : Satellite
         
     | 
| 193 | 
         
            +
              const satelliteTile = tileLayer.provider(localVarSatellite)
         
     | 
| 194 | 
         
            +
             
     | 
| 195 | 
         
            +
              let baseMaps: ServiceTiles = { OpenStreetMap: osmTile }
         
     | 
| 196 | 
         
            +
              baseMaps[localVarSatellite] = satelliteTile
         
     | 
| 197 | 
         
            +
              currentBaseMapNameRef.value = OpenStreetMap
         
     | 
| 198 | 
         
            +
             
     | 
| 199 | 
         
            +
              map = LeafletMap('map', {
         
     | 
| 200 | 
         
            +
                layers: [osmTile]
         
     | 
| 201 | 
         
            +
              })
         
     | 
| 202 | 
         
            +
              map.fitBounds(props.mapBounds)
         
     | 
| 203 | 
         
            +
              map.attributionControl.setPrefix(prefix)
         
     | 
| 204 | 
         
            +
              LeafletControl.scale({ position: 'bottomleft', imperial: false, metric: true }).addTo(map)
         
     | 
| 205 | 
         
            +
             
     | 
| 206 | 
         
            +
              LeafletControl.layers(baseMaps).addTo(map)
         
     | 
| 207 | 
         
            +
              setGeomanControls(map)
         
     | 
| 208 | 
         
            +
              updateZoomBboxMap(map)
         
     | 
| 209 | 
         
            +
             
     | 
| 210 | 
         
            +
              map.on('zoomend', (e: LEvented) => {
         
     | 
| 211 | 
         
            +
                updateZoomBboxMap(map)
         
     | 
| 212 | 
         
            +
              })
         
     | 
| 213 | 
         
            +
             
     | 
| 214 | 
         
            +
              map.on('mouseup', (e: LEvented) => {
         
     | 
| 215 | 
         
            +
                currentMapBBoxRef.value = getExtentCurrentViewMapBBox(map)
         
     | 
| 216 | 
         
            +
              })
         
     | 
| 217 | 
         
            +
             
     | 
| 218 | 
         
            +
              updateMapData(map, getPopupContentPoint, promptsArrayRef)
         
     | 
| 219 | 
         
            +
              map.on('baselayerchange', (e: LEvented) => {
         
     | 
| 220 | 
         
            +
                currentBaseMapNameRef.value = getCurrentBasemap(e.layer._url, baseMaps)
         
     | 
| 221 | 
         
            +
              })
         
     | 
| 222 | 
         
            +
            })
         
     | 
| 223 | 
         
            +
            </script>
         
     | 
| 224 | 
         
            +
             
     | 
    	
        static/src/components/StatsGrid.vue
    ADDED
    
    | 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <dl class="grid md:pt-1 md:pb-1" v-for="item in props.statsArray" v-bind:key="item.statName">
         
     | 
| 3 | 
         
            +
                <div class="flex flex-col bg-blue-100 text-center p-1 md:p-2">
         
     | 
| 4 | 
         
            +
                  <dt class="order-last font-medium">{{ item.statName }}</dt>
         
     | 
| 5 | 
         
            +
                  <dd class="text-lg font-extrabold text-blue-600">{{ item.statValue }}</dd>
         
     | 
| 6 | 
         
            +
                </div>
         
     | 
| 7 | 
         
            +
              </dl>
         
     | 
| 8 | 
         
            +
            </template>
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            <script setup lang="ts">
         
     | 
| 11 | 
         
            +
            const props = defineProps<{
         
     | 
| 12 | 
         
            +
              statsArray: Array<{
         
     | 
| 13 | 
         
            +
                statName: string,
         
     | 
| 14 | 
         
            +
                statValue: string
         
     | 
| 15 | 
         
            +
              }>
         
     | 
| 16 | 
         
            +
            }>()
         
     | 
| 17 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/TableGenericComponent.vue
    ADDED
    
    | 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <table class="min-w-full divide-y-2 divide-gray-200 border border-gray-200 bg-white text-left p-4">
         
     | 
| 3 | 
         
            +
                <caption class="text-2xl bg-blue-100">{{ props.title }}</caption>
         
     | 
| 4 | 
         
            +
                <thead class="text-left">
         
     | 
| 5 | 
         
            +
                <tr class="text-left">
         
     | 
| 6 | 
         
            +
                  <th
         
     | 
| 7 | 
         
            +
                    class="whitespace-nowrap px-1 py-1 text-gray-900 text-left 2md:font-medium 2md:py-2 2md:px-4"
         
     | 
| 8 | 
         
            +
                    v-for="item in props.header"
         
     | 
| 9 | 
         
            +
                    :key="item"
         
     | 
| 10 | 
         
            +
                  >{{ item }}</th>
         
     | 
| 11 | 
         
            +
                </tr>
         
     | 
| 12 | 
         
            +
                </thead>
         
     | 
| 13 | 
         
            +
             
     | 
| 14 | 
         
            +
                <tbody class="divide-y divide-gray-200" v-for="row in props.rows" :key="props.rows[props.rowKey]">
         
     | 
| 15 | 
         
            +
                <tr class="odd:bg-gray-50">
         
     | 
| 16 | 
         
            +
                  <td v-for="item in row" class="whitespace-nowrap px-1 py-1 text-gray-900 2md:font-medium 2md:py-2 2md:px-4">{{ item }}</td>
         
     | 
| 17 | 
         
            +
                </tr>
         
     | 
| 18 | 
         
            +
                </tbody>
         
     | 
| 19 | 
         
            +
              </table>
         
     | 
| 20 | 
         
            +
            </template>
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            <script setup lang="ts">
         
     | 
| 23 | 
         
            +
            const props = defineProps<{
         
     | 
| 24 | 
         
            +
              header: Array<string>,
         
     | 
| 25 | 
         
            +
              rows: Array<Map<string, string>>,
         
     | 
| 26 | 
         
            +
              title: string,
         
     | 
| 27 | 
         
            +
              rowKey: string
         
     | 
| 28 | 
         
            +
            }>()
         
     | 
| 29 | 
         
            +
            </script>
         
     | 
| 30 | 
         
            +
             
     | 
    	
        static/src/components/buttons/ButtonComponent.vue
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <button class="inline-flex items-center p-2" @click="props.click">
         
     | 
| 3 | 
         
            +
                <slot></slot>
         
     | 
| 4 | 
         
            +
              </button>
         
     | 
| 5 | 
         
            +
            </template>
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            <script setup lang="ts">
         
     | 
| 8 | 
         
            +
            const props = defineProps<{
         
     | 
| 9 | 
         
            +
              click: Function
         
     | 
| 10 | 
         
            +
            }>()
         
     | 
| 11 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/buttons/ButtonMapSendRequest.vue
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            <template>
         
     | 
| 2 | 
         
            +
              <button
         
     | 
| 3 | 
         
            +
                :class="`${props.class} bg-gray-200 bg-opacity-50`"
         
     | 
| 4 | 
         
            +
                :disabled="promptsArray.length == 0 || responseMessage === waitingString"
         
     | 
| 5 | 
         
            +
                v-if="promptsArray.length == 0 || responseMessage === waitingString"
         
     | 
| 6 | 
         
            +
              >{{ responseMessage === waitingString ? responseMessage : '🚫 Empty prompt (disabled)' }}
         
     | 
| 7 | 
         
            +
              </button>
         
     | 
| 8 | 
         
            +
              <button
         
     | 
| 9 | 
         
            +
                :class="`${props.class} bg-blue-300 whitespace-no-wrap overflow-hidden truncate`"
         
     | 
| 10 | 
         
            +
                @click="sendMLRequest(map, promptsArray, currentBaseMapName)"
         
     | 
| 11 | 
         
            +
                v-else
         
     | 
| 12 | 
         
            +
              >
         
     | 
| 13 | 
         
            +
                <span v-if="responseMessage && responseMessage != '-'">{{ responseMessage }}</span>
         
     | 
| 14 | 
         
            +
                <span v-else>🔍 send ML request</span>
         
     | 
| 15 | 
         
            +
              </button>
         
     | 
| 16 | 
         
            +
            </template>
         
     | 
| 17 | 
         
            +
             
     | 
| 18 | 
         
            +
            <script setup lang="ts">
         
     | 
| 19 | 
         
            +
            import {Map as LMap} from 'leaflet';
         
     | 
| 20 | 
         
            +
            import type { IPointPrompt, IRectanglePrompt } from '@/components/types'
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            const props = defineProps<{
         
     | 
| 23 | 
         
            +
              class: string,
         
     | 
| 24 | 
         
            +
              currentBaseMapName: string,
         
     | 
| 25 | 
         
            +
              promptsArray: Array<IPointPrompt | IRectanglePrompt>,
         
     | 
| 26 | 
         
            +
              responseMessage: string,
         
     | 
| 27 | 
         
            +
              map: LMap,
         
     | 
| 28 | 
         
            +
              sendMLRequest: Function,
         
     | 
| 29 | 
         
            +
              waitingString: string
         
     | 
| 30 | 
         
            +
            }>()
         
     | 
| 31 | 
         
            +
            </script>
         
     | 
    	
        static/src/components/constants.ts
    ADDED
    
    | 
         @@ -0,0 +1,236 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import { ref } from "vue"
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            export const prefix = " © <a target=\"_blank\" href=\"https://leafletjs.com\">leaflet</a>"
         
     | 
| 4 | 
         
            +
            export const OpenStreetMap = "OpenStreetMap"
         
     | 
| 5 | 
         
            +
            export const Satellite = "OpenStreetMap.HOT"
         
     | 
| 6 | 
         
            +
            export const maxZoom = 20
         
     | 
| 7 | 
         
            +
            export const minZoom = 3
         
     | 
| 8 | 
         
            +
            export const waitingString = "waiting..."
         
     | 
| 9 | 
         
            +
            export const durationRef = ref(0)
         
     | 
| 10 | 
         
            +
            export const numberOfPolygonsRef = ref(0)
         
     | 
| 11 | 
         
            +
            export const numberOfPredictedMasksRef = ref(0)
         
     | 
| 12 | 
         
            +
            export const responseMessageRef = ref("-")
         
     | 
| 13 | 
         
            +
            export const geojsonRef = ref("geojsonOutput-placeholder")
         
     | 
| 14 | 
         
            +
            // modified from https://github.com/for-GET/know-your-http-well/blob/master/json/status-codes.json
         
     | 
| 15 | 
         
            +
            export const htmlStatusMessages = [
         
     | 
| 16 | 
         
            +
              {
         
     | 
| 17 | 
         
            +
                code: 100,
         
     | 
| 18 | 
         
            +
                phrase: 'Continue'
         
     | 
| 19 | 
         
            +
              },
         
     | 
| 20 | 
         
            +
              {
         
     | 
| 21 | 
         
            +
                code: 101,
         
     | 
| 22 | 
         
            +
                phrase: 'Switching Protocols'
         
     | 
| 23 | 
         
            +
              },
         
     | 
| 24 | 
         
            +
              {
         
     | 
| 25 | 
         
            +
                code: 200,
         
     | 
| 26 | 
         
            +
                phrase: 'OK'
         
     | 
| 27 | 
         
            +
              },
         
     | 
| 28 | 
         
            +
              {
         
     | 
| 29 | 
         
            +
                code: 201,
         
     | 
| 30 | 
         
            +
                phrase: 'Created'
         
     | 
| 31 | 
         
            +
              },
         
     | 
| 32 | 
         
            +
              {
         
     | 
| 33 | 
         
            +
                code: 202,
         
     | 
| 34 | 
         
            +
                phrase: 'Accepted'
         
     | 
| 35 | 
         
            +
              },
         
     | 
| 36 | 
         
            +
              {
         
     | 
| 37 | 
         
            +
                code: 203,
         
     | 
| 38 | 
         
            +
                phrase: 'Non-Authoritative Information'
         
     | 
| 39 | 
         
            +
              },
         
     | 
| 40 | 
         
            +
              {
         
     | 
| 41 | 
         
            +
                code: 204,
         
     | 
| 42 | 
         
            +
                phrase: 'No Content'
         
     | 
| 43 | 
         
            +
              },
         
     | 
| 44 | 
         
            +
              {
         
     | 
| 45 | 
         
            +
                code: 205,
         
     | 
| 46 | 
         
            +
                phrase: 'Reset Content'
         
     | 
| 47 | 
         
            +
              },
         
     | 
| 48 | 
         
            +
              {
         
     | 
| 49 | 
         
            +
                code: 206,
         
     | 
| 50 | 
         
            +
                phrase: 'Partial Content'
         
     | 
| 51 | 
         
            +
              },
         
     | 
| 52 | 
         
            +
              {
         
     | 
| 53 | 
         
            +
                code: 300,
         
     | 
| 54 | 
         
            +
                phrase: 'Multiple Choices'
         
     | 
| 55 | 
         
            +
              },
         
     | 
| 56 | 
         
            +
              {
         
     | 
| 57 | 
         
            +
                code: 302,
         
     | 
| 58 | 
         
            +
                phrase: 'Found'
         
     | 
| 59 | 
         
            +
              },
         
     | 
| 60 | 
         
            +
              {
         
     | 
| 61 | 
         
            +
                code: 303,
         
     | 
| 62 | 
         
            +
                phrase: 'See Other'
         
     | 
| 63 | 
         
            +
              },
         
     | 
| 64 | 
         
            +
              {
         
     | 
| 65 | 
         
            +
                code: 304,
         
     | 
| 66 | 
         
            +
                phrase: 'Not Modified'
         
     | 
| 67 | 
         
            +
              },
         
     | 
| 68 | 
         
            +
              {
         
     | 
| 69 | 
         
            +
                code: 305,
         
     | 
| 70 | 
         
            +
                phrase: 'Use Proxy'
         
     | 
| 71 | 
         
            +
              },
         
     | 
| 72 | 
         
            +
              {
         
     | 
| 73 | 
         
            +
                code: 307,
         
     | 
| 74 | 
         
            +
                phrase: 'Temporary Redirect'
         
     | 
| 75 | 
         
            +
              },
         
     | 
| 76 | 
         
            +
              {
         
     | 
| 77 | 
         
            +
                code: 400,
         
     | 
| 78 | 
         
            +
                phrase: 'Bad Request'
         
     | 
| 79 | 
         
            +
              },
         
     | 
| 80 | 
         
            +
              {
         
     | 
| 81 | 
         
            +
                code: 401,
         
     | 
| 82 | 
         
            +
                phrase: 'Unauthorized'
         
     | 
| 83 | 
         
            +
              },
         
     | 
| 84 | 
         
            +
              {
         
     | 
| 85 | 
         
            +
                code: 402,
         
     | 
| 86 | 
         
            +
                phrase: 'Payment Required'
         
     | 
| 87 | 
         
            +
              },
         
     | 
| 88 | 
         
            +
              {
         
     | 
| 89 | 
         
            +
                code: 403,
         
     | 
| 90 | 
         
            +
                phrase: 'Forbidden'
         
     | 
| 91 | 
         
            +
              },
         
     | 
| 92 | 
         
            +
              {
         
     | 
| 93 | 
         
            +
                code: 404,
         
     | 
| 94 | 
         
            +
                phrase: 'Not Found'
         
     | 
| 95 | 
         
            +
              },
         
     | 
| 96 | 
         
            +
              {
         
     | 
| 97 | 
         
            +
                code: 405,
         
     | 
| 98 | 
         
            +
                phrase: 'Method Not Allowed'
         
     | 
| 99 | 
         
            +
              },
         
     | 
| 100 | 
         
            +
              {
         
     | 
| 101 | 
         
            +
                code: 406,
         
     | 
| 102 | 
         
            +
                phrase: 'Not Acceptable'
         
     | 
| 103 | 
         
            +
              },
         
     | 
| 104 | 
         
            +
              {
         
     | 
| 105 | 
         
            +
                code: 407,
         
     | 
| 106 | 
         
            +
                phrase: 'Proxy Authentication Required'
         
     | 
| 107 | 
         
            +
              },
         
     | 
| 108 | 
         
            +
              {
         
     | 
| 109 | 
         
            +
                code: 408,
         
     | 
| 110 | 
         
            +
                phrase: 'Request Timeout'
         
     | 
| 111 | 
         
            +
              },
         
     | 
| 112 | 
         
            +
              {
         
     | 
| 113 | 
         
            +
                code: 409,
         
     | 
| 114 | 
         
            +
                phrase: 'Conflict'
         
     | 
| 115 | 
         
            +
              },
         
     | 
| 116 | 
         
            +
              {
         
     | 
| 117 | 
         
            +
                code: 410,
         
     | 
| 118 | 
         
            +
                phrase: 'Gone'
         
     | 
| 119 | 
         
            +
              },
         
     | 
| 120 | 
         
            +
              {
         
     | 
| 121 | 
         
            +
                code: 411,
         
     | 
| 122 | 
         
            +
                phrase: 'Length Required'
         
     | 
| 123 | 
         
            +
              },
         
     | 
| 124 | 
         
            +
              {
         
     | 
| 125 | 
         
            +
                code: 412,
         
     | 
| 126 | 
         
            +
                phrase: 'Precondition Failed'
         
     | 
| 127 | 
         
            +
              },
         
     | 
| 128 | 
         
            +
              {
         
     | 
| 129 | 
         
            +
                code: 413,
         
     | 
| 130 | 
         
            +
                phrase: 'Payload Too Large'
         
     | 
| 131 | 
         
            +
              },
         
     | 
| 132 | 
         
            +
              {
         
     | 
| 133 | 
         
            +
                code: 414,
         
     | 
| 134 | 
         
            +
                phrase: 'URI Too Long'
         
     | 
| 135 | 
         
            +
              },
         
     | 
| 136 | 
         
            +
              {
         
     | 
| 137 | 
         
            +
                code: 415,
         
     | 
| 138 | 
         
            +
                phrase: 'Unsupported Media Type'
         
     | 
| 139 | 
         
            +
              },
         
     | 
| 140 | 
         
            +
              {
         
     | 
| 141 | 
         
            +
                code: 416,
         
     | 
| 142 | 
         
            +
                phrase: 'Range Not Satisfiable'
         
     | 
| 143 | 
         
            +
              },
         
     | 
| 144 | 
         
            +
              {
         
     | 
| 145 | 
         
            +
                code: 417,
         
     | 
| 146 | 
         
            +
                phrase: 'Expectation Failed'
         
     | 
| 147 | 
         
            +
              },
         
     | 
| 148 | 
         
            +
              {
         
     | 
| 149 | 
         
            +
                code: 418,
         
     | 
| 150 | 
         
            +
                phrase: "I'm a teapot"
         
     | 
| 151 | 
         
            +
              },
         
     | 
| 152 | 
         
            +
              {
         
     | 
| 153 | 
         
            +
                code: 426,
         
     | 
| 154 | 
         
            +
                phrase: 'Upgrade Required'
         
     | 
| 155 | 
         
            +
              },
         
     | 
| 156 | 
         
            +
              {
         
     | 
| 157 | 
         
            +
                code: 500,
         
     | 
| 158 | 
         
            +
                phrase: 'Internal Server Error'
         
     | 
| 159 | 
         
            +
              },
         
     | 
| 160 | 
         
            +
              {
         
     | 
| 161 | 
         
            +
                code: 501,
         
     | 
| 162 | 
         
            +
                phrase: 'Not Implemented'
         
     | 
| 163 | 
         
            +
              },
         
     | 
| 164 | 
         
            +
              {
         
     | 
| 165 | 
         
            +
                code: 502,
         
     | 
| 166 | 
         
            +
                phrase: 'Bad Gateway'
         
     | 
| 167 | 
         
            +
              },
         
     | 
| 168 | 
         
            +
              {
         
     | 
| 169 | 
         
            +
                code: 503,
         
     | 
| 170 | 
         
            +
                phrase: 'Service Unavailable'
         
     | 
| 171 | 
         
            +
              },
         
     | 
| 172 | 
         
            +
              {
         
     | 
| 173 | 
         
            +
                code: 504,
         
     | 
| 174 | 
         
            +
                phrase: 'Gateway Time-out'
         
     | 
| 175 | 
         
            +
              },
         
     | 
| 176 | 
         
            +
              {
         
     | 
| 177 | 
         
            +
                code: 505,
         
     | 
| 178 | 
         
            +
                phrase: 'HTTP Version Not Supported'
         
     | 
| 179 | 
         
            +
              },
         
     | 
| 180 | 
         
            +
              {
         
     | 
| 181 | 
         
            +
                code: 102,
         
     | 
| 182 | 
         
            +
                phrase: 'Processing'
         
     | 
| 183 | 
         
            +
              },
         
     | 
| 184 | 
         
            +
              {
         
     | 
| 185 | 
         
            +
                code: 207,
         
     | 
| 186 | 
         
            +
                phrase: 'Multi-Status'
         
     | 
| 187 | 
         
            +
              },
         
     | 
| 188 | 
         
            +
              {
         
     | 
| 189 | 
         
            +
                code: 226,
         
     | 
| 190 | 
         
            +
                phrase: 'IM Used'
         
     | 
| 191 | 
         
            +
              },
         
     | 
| 192 | 
         
            +
              {
         
     | 
| 193 | 
         
            +
                code: 308,
         
     | 
| 194 | 
         
            +
                phrase: 'Permanent Redirect'
         
     | 
| 195 | 
         
            +
              },
         
     | 
| 196 | 
         
            +
              {
         
     | 
| 197 | 
         
            +
                code: 422,
         
     | 
| 198 | 
         
            +
                phrase: 'Unprocessable Entity'
         
     | 
| 199 | 
         
            +
              },
         
     | 
| 200 | 
         
            +
              {
         
     | 
| 201 | 
         
            +
                code: 423,
         
     | 
| 202 | 
         
            +
                phrase: 'Locked'
         
     | 
| 203 | 
         
            +
              },
         
     | 
| 204 | 
         
            +
              {
         
     | 
| 205 | 
         
            +
                code: 424,
         
     | 
| 206 | 
         
            +
                phrase: 'Failed Dependency'
         
     | 
| 207 | 
         
            +
              },
         
     | 
| 208 | 
         
            +
              {
         
     | 
| 209 | 
         
            +
                code: 428,
         
     | 
| 210 | 
         
            +
                phrase: 'Precondition Required'
         
     | 
| 211 | 
         
            +
              },
         
     | 
| 212 | 
         
            +
              {
         
     | 
| 213 | 
         
            +
                code: 429,
         
     | 
| 214 | 
         
            +
                phrase: 'Too Many Requests'
         
     | 
| 215 | 
         
            +
              },
         
     | 
| 216 | 
         
            +
              {
         
     | 
| 217 | 
         
            +
                code: 431,
         
     | 
| 218 | 
         
            +
                phrase: 'Request Header Fields Too Large'
         
     | 
| 219 | 
         
            +
              },
         
     | 
| 220 | 
         
            +
              {
         
     | 
| 221 | 
         
            +
                code: 451,
         
     | 
| 222 | 
         
            +
                phrase: 'Unavailable For Legal Reasons'
         
     | 
| 223 | 
         
            +
              },
         
     | 
| 224 | 
         
            +
              {
         
     | 
| 225 | 
         
            +
                code: 506,
         
     | 
| 226 | 
         
            +
                phrase: 'Variant Also Negotiates'
         
     | 
| 227 | 
         
            +
              },
         
     | 
| 228 | 
         
            +
              {
         
     | 
| 229 | 
         
            +
                code: 507,
         
     | 
| 230 | 
         
            +
                phrase: 'Insufficient Storage'
         
     | 
| 231 | 
         
            +
              },
         
     | 
| 232 | 
         
            +
              {
         
     | 
| 233 | 
         
            +
                code: 511,
         
     | 
| 234 | 
         
            +
                phrase: 'Network Authentication Required'
         
     | 
| 235 | 
         
            +
              }
         
     | 
| 236 | 
         
            +
            ]
         
     | 
    	
        static/src/components/helpers.ts
    ADDED
    
    | 
         @@ -0,0 +1,253 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import L, { icon, Evented as LEvented, type LatLng, Map as LMap } from 'leaflet'
         
     | 
| 2 | 
         
            +
            import {
         
     | 
| 3 | 
         
            +
              responseMessageRef,
         
     | 
| 4 | 
         
            +
              waitingString,
         
     | 
| 5 | 
         
            +
              durationRef,
         
     | 
| 6 | 
         
            +
              numberOfPolygonsRef,
         
     | 
| 7 | 
         
            +
              numberOfPredictedMasksRef
         
     | 
| 8 | 
         
            +
            } from './constants'
         
     | 
| 9 | 
         
            +
            import {
         
     | 
| 10 | 
         
            +
              ExcludeIncludeLabelPrompt as excludeIncludeLabelPrompt,
         
     | 
| 11 | 
         
            +
              type ArrayNumber,
         
     | 
| 12 | 
         
            +
              type BboxLatLng,
         
     | 
| 13 | 
         
            +
              type ExcludeIncludeLabelPrompt,
         
     | 
| 14 | 
         
            +
              type IBodyLatLngPoints,
         
     | 
| 15 | 
         
            +
              type IPointPrompt,
         
     | 
| 16 | 
         
            +
              type IRectanglePrompt, type IRectangleTable, type IPointTable
         
     | 
| 17 | 
         
            +
            } from './types.d'
         
     | 
| 18 | 
         
            +
            import type { Ref } from 'vue'
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
            export const applyFnToObjectWithinArray = (array: Array<IPointPrompt | IRectanglePrompt>): Array<IPointTable | IRectangleTable> => {
         
     | 
| 22 | 
         
            +
              let newArray = []
         
     | 
| 23 | 
         
            +
              for (const el of array) {
         
     | 
| 24 | 
         
            +
                newArray.push(el.type === 'rectangle' ? getUpdatedRectangle(el) : getUpdatedPoint(el))
         
     | 
| 25 | 
         
            +
              }
         
     | 
| 26 | 
         
            +
              return newArray
         
     | 
| 27 | 
         
            +
            }
         
     | 
| 28 | 
         
            +
             
     | 
| 29 | 
         
            +
            const getUpdatedPoint = (obj: IPointPrompt): IPointTable => {
         
     | 
| 30 | 
         
            +
              return {
         
     | 
| 31 | 
         
            +
                id: obj.id,
         
     | 
| 32 | 
         
            +
                data: obj.data,
         
     | 
| 33 | 
         
            +
                label: obj.label
         
     | 
| 34 | 
         
            +
              }
         
     | 
| 35 | 
         
            +
            }
         
     | 
| 36 | 
         
            +
             
     | 
| 37 | 
         
            +
            const getUpdatedRectangle = (obj: IRectanglePrompt): IRectangleTable => {
         
     | 
| 38 | 
         
            +
              return {
         
     | 
| 39 | 
         
            +
                id: obj.id,
         
     | 
| 40 | 
         
            +
                data_ne: obj.data.ne,
         
     | 
| 41 | 
         
            +
                data_sw: obj.data.sw,
         
     | 
| 42 | 
         
            +
              }
         
     | 
| 43 | 
         
            +
            }
         
     | 
| 44 | 
         
            +
             
     | 
| 45 | 
         
            +
            /** get a custom icon given a PNG path with its anchor/size values  */
         
     | 
| 46 | 
         
            +
            const getCustomIconMarker = (
         
     | 
| 47 | 
         
            +
              iconUrlNoExt: string,
         
     | 
| 48 | 
         
            +
              shadowUrl = '/marker-shadow.png',
         
     | 
| 49 | 
         
            +
              iconSize: ArrayNumber = [25, 41],
         
     | 
| 50 | 
         
            +
              iconAnchor: ArrayNumber = [12, 41],
         
     | 
| 51 | 
         
            +
              popupAnchor: ArrayNumber = [1, -34],
         
     | 
| 52 | 
         
            +
              tooltipAnchor: ArrayNumber = [5, -25],
         
     | 
| 53 | 
         
            +
              shadowSize: ArrayNumber = [41, 41]
         
     | 
| 54 | 
         
            +
            ): icon => {
         
     | 
| 55 | 
         
            +
              return icon({
         
     | 
| 56 | 
         
            +
                iconUrl: `${iconUrlNoExt}.png`,
         
     | 
| 57 | 
         
            +
                iconRetinaUrl: `${iconUrlNoExt}-2x.png`,
         
     | 
| 58 | 
         
            +
                shadowUrl,
         
     | 
| 59 | 
         
            +
                iconSize,
         
     | 
| 60 | 
         
            +
                iconAnchor,
         
     | 
| 61 | 
         
            +
                popupAnchor,
         
     | 
| 62 | 
         
            +
                shadowSize,
         
     | 
| 63 | 
         
            +
                tooltipAnchor
         
     | 
| 64 | 
         
            +
              })
         
     | 
| 65 | 
         
            +
            }
         
     | 
| 66 | 
         
            +
             
     | 
| 67 | 
         
            +
            /** get an  the leaflet editor geoman.io toolbar with the custom actions to draw/edit/move point and rectangle layers */
         
     | 
| 68 | 
         
            +
            const getCustomGeomanActionsObject = (actionName: string, descriptionAction: string, arrayActions: Array<object>) => {
         
     | 
| 69 | 
         
            +
              return {
         
     | 
| 70 | 
         
            +
                name: actionName,
         
     | 
| 71 | 
         
            +
                block: 'custom',
         
     | 
| 72 | 
         
            +
                title: descriptionAction,
         
     | 
| 73 | 
         
            +
                actions: arrayActions
         
     | 
| 74 | 
         
            +
              }
         
     | 
| 75 | 
         
            +
            }
         
     | 
| 76 | 
         
            +
             
     | 
| 77 | 
         
            +
            /** prepare the leaflet editor geoman.io toolbar with the custom actions to draw/edit/move point and rectangle layers */
         
     | 
| 78 | 
         
            +
            export function setGeomanControls(localMap: LMap) {
         
     | 
| 79 | 
         
            +
              // leaflet geoman toolbar
         
     | 
| 80 | 
         
            +
              localMap.pm.addControls({
         
     | 
| 81 | 
         
            +
                position: 'topleft',
         
     | 
| 82 | 
         
            +
                drawControls: false,
         
     | 
| 83 | 
         
            +
                rotateMode: false,
         
     | 
| 84 | 
         
            +
                cutPolygon: false,
         
     | 
| 85 | 
         
            +
                customControls: true
         
     | 
| 86 | 
         
            +
              })
         
     | 
| 87 | 
         
            +
             
     | 
| 88 | 
         
            +
              const actionArray = [{
         
     | 
| 89 | 
         
            +
                  onClick(actionEvent: LEvented) {
         
     | 
| 90 | 
         
            +
                    console.log('actionEvent:', typeof actionEvent, '|', actionEvent, '')
         
     | 
| 91 | 
         
            +
                  },
         
     | 
| 92 | 
         
            +
                  name: 'actionName'
         
     | 
| 93 | 
         
            +
              }]
         
     | 
| 94 | 
         
            +
              const includeMarkerControl = localMap.pm.Toolbar.copyDrawControl('Marker',
         
     | 
| 95 | 
         
            +
                getCustomGeomanActionsObject('IncludeMarkerPrompt', 'Marker that add recognition regions from SAM prompt requests', actionArray)
         
     | 
| 96 | 
         
            +
              )
         
     | 
| 97 | 
         
            +
              includeMarkerControl.drawInstance.setOptions({
         
     | 
| 98 | 
         
            +
                markerStyle: { icon: getCustomIconMarker('/marker-icon-include') }
         
     | 
| 99 | 
         
            +
              })
         
     | 
| 100 | 
         
            +
              const excludeMarkerControl = localMap.pm.Toolbar.copyDrawControl('Marker',
         
     | 
| 101 | 
         
            +
                getCustomGeomanActionsObject('ExcludeMarkerPrompt', 'Marker that remove recognition regions from SAM prompt requests', actionArray)
         
     | 
| 102 | 
         
            +
              )
         
     | 
| 103 | 
         
            +
              excludeMarkerControl.drawInstance.setOptions({
         
     | 
| 104 | 
         
            +
                markerStyle: { icon: getCustomIconMarker('/marker-icon-exclude') }
         
     | 
| 105 | 
         
            +
              })
         
     | 
| 106 | 
         
            +
              localMap.pm.Toolbar.copyDrawControl('Rectangle', {
         
     | 
| 107 | 
         
            +
                name: 'RectanglePrompt',
         
     | 
| 108 | 
         
            +
                block: 'custom',
         
     | 
| 109 | 
         
            +
                title: 'Rectangular recognition regions for SAM prompt requests',
         
     | 
| 110 | 
         
            +
                actions: actionArray
         
     | 
| 111 | 
         
            +
              })
         
     | 
| 112 | 
         
            +
              localMap.pm.setPathOptions({
         
     | 
| 113 | 
         
            +
                color: "green",
         
     | 
| 114 | 
         
            +
                fillColor: "green",
         
     | 
| 115 | 
         
            +
                fillOpacity: 0.15,
         
     | 
| 116 | 
         
            +
              })
         
     | 
| 117 | 
         
            +
            }
         
     | 
| 118 | 
         
            +
             
     | 
| 119 | 
         
            +
            /** get the selected rectangle layer bounding box coordinate */
         
     | 
| 120 | 
         
            +
            export const getSelectedRectangleCoordinatesBBox = (leafletEvent: LEvented): BboxLatLng => {
         
     | 
| 121 | 
         
            +
              const { _northEast, _southWest } = leafletEvent.layer._bounds
         
     | 
| 122 | 
         
            +
              return {
         
     | 
| 123 | 
         
            +
                ne: new L.LatLng(_northEast.lat, _northEast.lng),
         
     | 
| 124 | 
         
            +
                sw: new L.LatLng(_southWest.lat, _southWest.lng)
         
     | 
| 125 | 
         
            +
              }
         
     | 
| 126 | 
         
            +
            }
         
     | 
| 127 | 
         
            +
             
     | 
| 128 | 
         
            +
            /** get the current selected point coordinate */
         
     | 
| 129 | 
         
            +
            export const getSelectedPointCoordinate = (leafletEvent: LEvented): LatLng => {
         
     | 
| 130 | 
         
            +
              return leafletEvent.layer._latlng
         
     | 
| 131 | 
         
            +
            }
         
     | 
| 132 | 
         
            +
             
     | 
| 133 | 
         
            +
            /** get the current map bounding box coordinates */
         
     | 
| 134 | 
         
            +
            export const getExtentCurrentViewMapBBox = (leafletMap: LMap): BboxLatLng => {
         
     | 
| 135 | 
         
            +
              const boundaries = leafletMap.getBounds()
         
     | 
| 136 | 
         
            +
              return { ne: boundaries.getNorthEast(), sw: boundaries.getSouthWest() }
         
     | 
| 137 | 
         
            +
            }
         
     | 
| 138 | 
         
            +
             
     | 
| 139 | 
         
            +
            /** send the ML request to the backend API through the cloudflare proxy function */
         
     | 
| 140 | 
         
            +
            export const getGeoJSONRequest = async (
         
     | 
| 141 | 
         
            +
              requestBody: IBodyLatLngPoints,
         
     | 
| 142 | 
         
            +
              urlApi: string
         
     | 
| 143 | 
         
            +
            ) => {
         
     | 
| 144 | 
         
            +
              responseMessageRef.value = waitingString
         
     | 
| 145 | 
         
            +
              const data = await fetch(urlApi, {
         
     | 
| 146 | 
         
            +
                method: 'POST',
         
     | 
| 147 | 
         
            +
                body: JSON.stringify(requestBody),
         
     | 
| 148 | 
         
            +
                headers: {
         
     | 
| 149 | 
         
            +
                  'Content-type': 'application/json'
         
     | 
| 150 | 
         
            +
                }
         
     | 
| 151 | 
         
            +
              })
         
     | 
| 152 | 
         
            +
              try {
         
     | 
| 153 | 
         
            +
                if (data.status === 200) {
         
     | 
| 154 | 
         
            +
                  const output: Object = await data.json()
         
     | 
| 155 | 
         
            +
                  try {
         
     | 
| 156 | 
         
            +
                    const parsed = JSON.parse(output.body)
         
     | 
| 157 | 
         
            +
                    const { geojson, n_predictions, n_shapes_geojson } = parsed.output
         
     | 
| 158 | 
         
            +
             
     | 
| 159 | 
         
            +
                    const parsedGeojson = JSON.parse(geojson)
         
     | 
| 160 | 
         
            +
                    durationRef.value = parsed.duration_run
         
     | 
| 161 | 
         
            +
                    numberOfPolygonsRef.value = n_shapes_geojson
         
     | 
| 162 | 
         
            +
                    numberOfPredictedMasksRef.value = n_predictions
         
     | 
| 163 | 
         
            +
                    responseMessageRef.value = ''
         
     | 
| 164 | 
         
            +
                    return parsedGeojson
         
     | 
| 165 | 
         
            +
                  } catch (errParseOutput1) {
         
     | 
| 166 | 
         
            +
                    console.error("errParseOutput1::", errParseOutput1)
         
     | 
| 167 | 
         
            +
                    return String(errParseOutput1)
         
     | 
| 168 | 
         
            +
                  }
         
     | 
| 169 | 
         
            +
                } else {
         
     | 
| 170 | 
         
            +
                  const outputText = await data.text()
         
     | 
| 171 | 
         
            +
                  console.error('getGeoJSONRequest => status not 200, outputText', outputText, '#')
         
     | 
| 172 | 
         
            +
                  responseMessageRef.value = `error message response: ${outputText}...`
         
     | 
| 173 | 
         
            +
                }
         
     | 
| 174 | 
         
            +
              } catch (errorOtherData) {
         
     | 
| 175 | 
         
            +
                const statusText = data.statusText || 'no response or uncaught exception!'
         
     | 
| 176 | 
         
            +
                console.error(
         
     | 
| 177 | 
         
            +
                  'getGeoJSONRequest => data',
         
     | 
| 178 | 
         
            +
                  data,
         
     | 
| 179 | 
         
            +
                  'statusText',
         
     | 
| 180 | 
         
            +
                  statusText,
         
     | 
| 181 | 
         
            +
                  'errorOtherData',
         
     | 
| 182 | 
         
            +
                  errorOtherData,
         
     | 
| 183 | 
         
            +
                  '#'
         
     | 
| 184 | 
         
            +
                )
         
     | 
| 185 | 
         
            +
                responseMessageRef.value = `error status response: ${statusText}...`
         
     | 
| 186 | 
         
            +
              }
         
     | 
| 187 | 
         
            +
            }
         
     | 
| 188 | 
         
            +
             
     | 
| 189 | 
         
            +
            /** populate a single point ML request prompt, by type (exclude or include), see type ExcludeIncludeLabelPrompt */
         
     | 
| 190 | 
         
            +
            export const getPointPromptElement = (e: LEvented, elementType: ExcludeIncludeLabelPrompt): IPointPrompt|IRectanglePrompt => {
         
     | 
| 191 | 
         
            +
              const currentPointLayer: LatLng = getSelectedPointCoordinate(e)
         
     | 
| 192 | 
         
            +
              return {
         
     | 
| 193 | 
         
            +
                id: e.layer._leaflet_id,
         
     | 
| 194 | 
         
            +
                type: 'point',
         
     | 
| 195 | 
         
            +
                data: currentPointLayer,
         
     | 
| 196 | 
         
            +
                label: elementType
         
     | 
| 197 | 
         
            +
              }
         
     | 
| 198 | 
         
            +
            }
         
     | 
| 199 | 
         
            +
             
     | 
| 200 | 
         
            +
            /** populate a single rectangle ML request prompt */
         
     | 
| 201 | 
         
            +
            export const getRectanglePromptElement = (e: LEvented) => {
         
     | 
| 202 | 
         
            +
              return {
         
     | 
| 203 | 
         
            +
                id: e.layer._leaflet_id,
         
     | 
| 204 | 
         
            +
                type: 'rectangle',
         
     | 
| 205 | 
         
            +
                data: getSelectedRectangleCoordinatesBBox(e)
         
     | 
| 206 | 
         
            +
              }
         
     | 
| 207 | 
         
            +
            }
         
     | 
| 208 | 
         
            +
             
     | 
| 209 | 
         
            +
            /** handle different event/layer types (rectangle, point: IncludeMarkerPrompt, ExcludeMarkerPrompt) */
         
     | 
| 210 | 
         
            +
            const updateLayerOnCreateOrEditEvent = (
         
     | 
| 211 | 
         
            +
              event: LEvented,
         
     | 
| 212 | 
         
            +
              getPopupContentPointFn: (arg0: LEvented, arg1: number) => HTMLDivElement,
         
     | 
| 213 | 
         
            +
              promptsArrayRef: Ref) => {
         
     | 
| 214 | 
         
            +
              responseMessageRef.value = '-'
         
     | 
| 215 | 
         
            +
              if (event.shape === 'IncludeMarkerPrompt' || event.shape === 'ExcludeMarkerPrompt') {
         
     | 
| 216 | 
         
            +
                const labelPoint = Number(excludeIncludeLabelPrompt[event.shape])
         
     | 
| 217 | 
         
            +
                const div = getPopupContentPointFn(event, labelPoint)
         
     | 
| 218 | 
         
            +
                event.layer.bindPopup(div).openPopup()
         
     | 
| 219 | 
         
            +
                promptsArrayRef.value.push(getPointPromptElement(event, labelPoint))
         
     | 
| 220 | 
         
            +
              }
         
     | 
| 221 | 
         
            +
              if (event.shape === 'RectanglePrompt') {
         
     | 
| 222 | 
         
            +
                event.layer.bindPopup(`id:${event.layer._leaflet_id}.`).openPopup()
         
     | 
| 223 | 
         
            +
                promptsArrayRef.value.push(getRectanglePromptElement(event))
         
     | 
| 224 | 
         
            +
              }
         
     | 
| 225 | 
         
            +
            }
         
     | 
| 226 | 
         
            +
             
     | 
| 227 | 
         
            +
            /** listen on the leaflet editor geoman.io events and update its layer properties within the promptsArrayRef vue ref */
         
     | 
| 228 | 
         
            +
            export const updateMapData = (
         
     | 
| 229 | 
         
            +
              localMap: LMap,
         
     | 
| 230 | 
         
            +
              getPopupContentPointFn: (arg0: LEvented, arg1: number) => HTMLDivElement,
         
     | 
| 231 | 
         
            +
              promptsArrayRef: Ref
         
     | 
| 232 | 
         
            +
            ) => {
         
     | 
| 233 | 
         
            +
              localMap.on('pm:create', (e: LEvented) => {
         
     | 
| 234 | 
         
            +
                updateLayerOnCreateOrEditEvent(e, getPopupContentPointFn, promptsArrayRef)
         
     | 
| 235 | 
         
            +
             
     | 
| 236 | 
         
            +
                // listen to changes on the new layer and update its object within promptsArrayRef
         
     | 
| 237 | 
         
            +
                e.layer.on('pm:edit', function(newEvent: LEvented) {
         
     | 
| 238 | 
         
            +
                  promptsArrayRef.value = removeEventFromArrayByIndex(promptsArrayRef.value, newEvent)
         
     | 
| 239 | 
         
            +
                  updateLayerOnCreateOrEditEvent(e, getPopupContentPointFn, promptsArrayRef)
         
     | 
| 240 | 
         
            +
                });
         
     | 
| 241 | 
         
            +
              })
         
     | 
| 242 | 
         
            +
              localMap.on('pm:remove', (e: LEvented) => {
         
     | 
| 243 | 
         
            +
                responseMessageRef.value = '-'
         
     | 
| 244 | 
         
            +
                promptsArrayRef.value = removeEventFromArrayByIndex(promptsArrayRef.value, e)
         
     | 
| 245 | 
         
            +
              })
         
     | 
| 246 | 
         
            +
            }
         
     | 
| 247 | 
         
            +
             
     | 
| 248 | 
         
            +
            /** remove the selected layer from the ML request array prompt */
         
     | 
| 249 | 
         
            +
            const removeEventFromArrayByIndex = (arr: Array<LEvented>, e: LEvented) => {
         
     | 
| 250 | 
         
            +
              return arr.filter((el: LEvented) => {
         
     | 
| 251 | 
         
            +
                return el.id != e.layer._leaflet_id
         
     | 
| 252 | 
         
            +
              })
         
     | 
| 253 | 
         
            +
            }
         
     | 
    	
        static/src/components/types.d.ts
    ADDED
    
    | 
         @@ -0,0 +1,50 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import { Evented, type LatLng } from "leaflet";
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            export interface BboxLatLng {
         
     | 
| 4 | 
         
            +
                ne: LatLng,
         
     | 
| 5 | 
         
            +
                sw: LatLng
         
     | 
| 6 | 
         
            +
            }
         
     | 
| 7 | 
         
            +
             
     | 
| 8 | 
         
            +
            export enum ExcludeIncludeLabelPrompt {
         
     | 
| 9 | 
         
            +
                ExcludeMarkerPrompt = 0,
         
     | 
| 10 | 
         
            +
                IncludeMarkerPrompt = 1
         
     | 
| 11 | 
         
            +
            }
         
     | 
| 12 | 
         
            +
            type PointPromptType = "point"
         
     | 
| 13 | 
         
            +
            type RectanglePromptType = "rectangle"
         
     | 
| 14 | 
         
            +
             
     | 
| 15 | 
         
            +
            export interface IPointPrompt {
         
     | 
| 16 | 
         
            +
                id: Evented.layer._url,
         
     | 
| 17 | 
         
            +
                type: PointPromptType,
         
     | 
| 18 | 
         
            +
                data: LatLng,
         
     | 
| 19 | 
         
            +
                label: ExcludeIncludeLabelPrompt
         
     | 
| 20 | 
         
            +
            }
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            export interface IRectanglePrompt {
         
     | 
| 23 | 
         
            +
                id?: Evented.layer._url,
         
     | 
| 24 | 
         
            +
                type: RectanglePromptType,
         
     | 
| 25 | 
         
            +
                data: BboxLatLng
         
     | 
| 26 | 
         
            +
            }
         
     | 
| 27 | 
         
            +
             
     | 
| 28 | 
         
            +
            export interface IPointTable {
         
     | 
| 29 | 
         
            +
                id?: Evented.layer._url,
         
     | 
| 30 | 
         
            +
                data: LatLng,
         
     | 
| 31 | 
         
            +
                label: ExcludeIncludeLabelPrompt
         
     | 
| 32 | 
         
            +
            }
         
     | 
| 33 | 
         
            +
             
     | 
| 34 | 
         
            +
            export interface IRectangleTable {
         
     | 
| 35 | 
         
            +
                id?: Evented.layer._url,
         
     | 
| 36 | 
         
            +
                data_ne: BboxLatLng,
         
     | 
| 37 | 
         
            +
                data_sw: BboxLatLng
         
     | 
| 38 | 
         
            +
            }
         
     | 
| 39 | 
         
            +
              
         
     | 
| 40 | 
         
            +
            export interface IBodyLatLngPoints {
         
     | 
| 41 | 
         
            +
                bbox: BboxLatLng,
         
     | 
| 42 | 
         
            +
                prompt: Array<IPointPrompt|IRectanglePrompt>,
         
     | 
| 43 | 
         
            +
                zoom: number,
         
     | 
| 44 | 
         
            +
                source_type: string
         
     | 
| 45 | 
         
            +
            }
         
     | 
| 46 | 
         
            +
             
     | 
| 47 | 
         
            +
            export type OpenStreetMap = "OpenStreetMap"
         
     | 
| 48 | 
         
            +
            export type Satellite = "Satellite"
         
     | 
| 49 | 
         
            +
            export type SourceTileType = OpenStreetMap | Satellite
         
     | 
| 50 | 
         
            +
            export type ArrayNumber = Array<number>
         
     | 
    	
        static/src/input.css
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            @import "leaflet/dist/leaflet.css";
         
     | 
| 2 | 
         
            +
            @import "leaflet-custom.css";
         
     | 
| 3 | 
         
            +
            @import "@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css";
         
     | 
| 4 | 
         
            +
            @tailwind base;
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            @layer base {
         
     | 
| 7 | 
         
            +
                * {
         
     | 
| 8 | 
         
            +
                    @apply box-border;
         
     | 
| 9 | 
         
            +
                }
         
     | 
| 10 | 
         
            +
                h1 {
         
     | 
| 11 | 
         
            +
                    @apply text-xl font-bold md:text-3xl;
         
     | 
| 12 | 
         
            +
                }
         
     | 
| 13 | 
         
            +
                a {
         
     | 
| 14 | 
         
            +
                    @apply underline;
         
     | 
| 15 | 
         
            +
                }
         
     | 
| 16 | 
         
            +
            }
         
     | 
| 17 | 
         
            +
             
     | 
| 18 | 
         
            +
            @tailwind components;
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
            @tailwind utilities;
         
     | 
    	
        static/src/leaflet-custom.css
    ADDED
    
    | 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            .map-predictions {
         
     | 
| 2 | 
         
            +
                width: 80%;
         
     | 
| 3 | 
         
            +
                aspect-ratio: 256/171;
         
     | 
| 4 | 
         
            +
                position: relative;
         
     | 
| 5 | 
         
            +
                z-index: 999;
         
     | 
| 6 | 
         
            +
                /*float: left;*/
         
     | 
| 7 | 
         
            +
            }
         
     | 
| 8 | 
         
            +
            a.leaflet-control-layers-toggle {
         
     | 
| 9 | 
         
            +
                background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);
         
     | 
| 10 | 
         
            +
                background-size: 26px 26px;
         
     | 
| 11 | 
         
            +
            }
         
     | 
| 12 | 
         
            +
            .leaflet-retina .leaflet-control-layers-toggle {
         
     | 
| 13 | 
         
            +
                background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);
         
     | 
| 14 | 
         
            +
                background-size: 28px 28px;
         
     | 
| 15 | 
         
            +
            }
         
     | 
| 16 | 
         
            +
            @media only screen and (min-width: 2000px) {
         
     | 
| 17 | 
         
            +
                .map-predictions {
         
     | 
| 18 | 
         
            +
                    width: 100%;
         
     | 
| 19 | 
         
            +
                }
         
     | 
| 20 | 
         
            +
            }
         
     | 
| 21 | 
         
            +
            @media only screen and (max-width: 1800px) {
         
     | 
| 22 | 
         
            +
                .map-predictions {
         
     | 
| 23 | 
         
            +
                    width: 75%;
         
     | 
| 24 | 
         
            +
                }
         
     | 
| 25 | 
         
            +
            }
         
     | 
| 26 | 
         
            +
            @media only screen and (max-width: 1600px) {
         
     | 
| 27 | 
         
            +
                .map-predictions {
         
     | 
| 28 | 
         
            +
                    width: 65%;
         
     | 
| 29 | 
         
            +
                }
         
     | 
| 30 | 
         
            +
            }
         
     | 
| 31 | 
         
            +
            @media only screen and (max-width: 1370px) and (max-height: 920px) and (orientation: landscape) {
         
     | 
| 32 | 
         
            +
                .map-predictions {
         
     | 
| 33 | 
         
            +
                    width: 95%;
         
     | 
| 34 | 
         
            +
                }
         
     | 
| 35 | 
         
            +
            }
         
     | 
| 36 | 
         
            +
            @media only screen and (max-width: 810px) and (max-height: 370px) and (orientation: landscape) {
         
     | 
| 37 | 
         
            +
                .map-predictions {
         
     | 
| 38 | 
         
            +
                    height: 70%;
         
     | 
| 39 | 
         
            +
                    max-height: 70%;
         
     | 
| 40 | 
         
            +
                    /*float: right;*/
         
     | 
| 41 | 
         
            +
                }
         
     | 
| 42 | 
         
            +
            }
         
     | 
    	
        static/src/main.ts
    ADDED
    
    | 
         @@ -0,0 +1,6 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import { createApp } from "vue";
         
     | 
| 2 | 
         
            +
            import App from "./App.vue";
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
            const app = createApp(App);
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            app.mount("#root");
         
     | 
    	
        static/tailwind.config.js
    ADDED
    
    | 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            /** @type {import('tailwindcss').Config} */
         
     | 
| 2 | 
         
            +
            import defaultTheme from 'tailwindcss/defaultTheme'
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
            export default {
         
     | 
| 5 | 
         
            +
              content: [
         
     | 
| 6 | 
         
            +
                "./dist/index.html",
         
     | 
| 7 | 
         
            +
                "./src/**/*.{vue,js,ts}",
         
     | 
| 8 | 
         
            +
              ],
         
     | 
| 9 | 
         
            +
              theme: {
         
     | 
| 10 | 
         
            +
                extend: {
         
     | 
| 11 | 
         
            +
                  screens: {
         
     | 
| 12 | 
         
            +
                    'xxs': '300px',
         
     | 
| 13 | 
         
            +
                    'xs': '512px',
         
     | 
| 14 | 
         
            +
                    'sm': '768px',
         
     | 
| 15 | 
         
            +
                    'md': '896px',
         
     | 
| 16 | 
         
            +
                    'tall': {
         
     | 
| 17 | 
         
            +
                      'raw': `only screen and ((max-height: 960px) and (max-width: 480px)) or (max-width: 512px)`
         
     | 
| 18 | 
         
            +
                    },
         
     | 
| 19 | 
         
            +
                    'verySmallTablet': {
         
     | 
| 20 | 
         
            +
                      'raw': `only screen and (max-height: 800px) and (max-width: 600px)`
         
     | 
| 21 | 
         
            +
                    },
         
     | 
| 22 | 
         
            +
                    'notVerySmallTablet': {
         
     | 
| 23 | 
         
            +
                      'raw': `only screen and (min-height: 800px) and (min-width: 600px)`
         
     | 
| 24 | 
         
            +
                    },
         
     | 
| 25 | 
         
            +
                    'smallTablet': {
         
     | 
| 26 | 
         
            +
                      'raw': 'only screen and (max-height: 1030px) and (max-width: 770px)'
         
     | 
| 27 | 
         
            +
                    },
         
     | 
| 28 | 
         
            +
                    'notTall': {
         
     | 
| 29 | 
         
            +
                      'raw': `only screen and (min-height: 960px) and (min-width: 480px)`
         
     | 
| 30 | 
         
            +
                    },
         
     | 
| 31 | 
         
            +
                    'notSmallTablet': {
         
     | 
| 32 | 
         
            +
                      'raw': 'only screen and (min-height: 1030px) and (min-width: 770px)'
         
     | 
| 33 | 
         
            +
                    },
         
     | 
| 34 | 
         
            +
                    '2md': '1024px',
         
     | 
| 35 | 
         
            +
                    'lg': '1200px',
         
     | 
| 36 | 
         
            +
                    'xl': '1380px',
         
     | 
| 37 | 
         
            +
                    '2xl': '2000px',
         
     | 
| 38 | 
         
            +
                    '3xl': '2360px'
         
     | 
| 39 | 
         
            +
                  },
         
     | 
| 40 | 
         
            +
                  fontFamily: {
         
     | 
| 41 | 
         
            +
                    sans: ['Inter var', ...defaultTheme.fontFamily.sans]
         
     | 
| 42 | 
         
            +
                  }
         
     | 
| 43 | 
         
            +
                },
         
     | 
| 44 | 
         
            +
              },
         
     | 
| 45 | 
         
            +
              plugins: [],
         
     | 
| 46 | 
         
            +
            }
         
     |