From 4307cb79709c920bc95cf03a42190bceee3f45ab Mon Sep 17 00:00:00 2001 From: bjornclauw Date: Mon, 6 Mar 2023 20:48:42 +0000 Subject: [PATCH 1/7] Translated using Weblate (Dutch) Currently translated at 100.0% (110 of 110 strings) Translation: FitTrackee/FitTrackee Client - User Translate-URL: https://hosted.weblate.org/projects/fittrackee/fittrackee-client-user/nl/ --- fittrackee_client/src/locales/nl/user.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fittrackee_client/src/locales/nl/user.json b/fittrackee_client/src/locales/nl/user.json index dcee7530..1f12a234 100644 --- a/fittrackee_client/src/locales/nl/user.json +++ b/fittrackee_client/src/locales/nl/user.json @@ -118,7 +118,7 @@ "REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.", "RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail", "RESET_PASSWORD": "Reset uw wachtwoord", - "REVIEW": "beoordeling", + "REVIEW": "beoordeel", "SHOW_PASSWORD": "toon wachtwoord", "THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.", "USERNAME": "Gebruikersnaam", From 1a62a968a5853d94aa448c6a111b176f2acbed6f Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 10:32:34 +0100 Subject: [PATCH 2/7] API - delete uploaded file on gpx processing error --- .../workouts/test_workouts_api_1_post.py | 91 +++++++++++++++++++ fittrackee/workouts/utils/workouts.py | 19 +++- 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/fittrackee/tests/workouts/test_workouts_api_1_post.py b/fittrackee/tests/workouts/test_workouts_api_1_post.py index e149bec2..103549e5 100644 --- a/fittrackee/tests/workouts/test_workouts_api_1_post.py +++ b/fittrackee/tests/workouts/test_workouts_api_1_post.py @@ -217,6 +217,22 @@ def assert_workout_data_wo_gpx(data: Dict) -> None: assert records[3]['value'] == 10.0 +def assert_files_are_deleted(app: Flask, user: User) -> None: + upload_directory = os.path.join( + app.config["UPLOAD_FOLDER"], f"workouts/{user.id}" + ) + assert ( + len( + [ + name + for name in os.listdir(upload_directory) + if os.path.isfile(os.path.join(upload_directory, name)) + ] + ) + == 0 + ) + + class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): def test_it_returns_error_if_user_is_not_authenticated( self, app: Flask, sport_1_cycling: Sport, gpx_file: str @@ -800,6 +816,56 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): ) assert 'data' not in data + def test_it_cleans_uploaded_file_on_gpx_processing_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + with patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + + def test_it_cleans_uploaded_file_and_static_map_on_segments_creation_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + with patch( + 'fittrackee.workouts.utils.workouts.create_segment', + side_effect=ValueError(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + @pytest.mark.parametrize( 'client_scope, can_access', [ @@ -1399,6 +1465,31 @@ class TestPostWorkoutWithZipArchive(ApiTestCaseMixin): ) assert 'data' not in data + def test_it_cleans_uploaded_file_on_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + file_path = os.path.join(app.root_path, 'tests/files/gpx_test.zip') + # 'gpx_test.zip' contains 3 gpx files (same data) and 1 non-gpx file + with open(file_path, 'rb') as zip_file, patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(zip_file, 'gpx_test.zip'), data='{"sport_id": 1}' + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + class TestPostAndGetWorkoutWithGpx(ApiTestCaseMixin): def workout_assertion( diff --git a/fittrackee/workouts/utils/workouts.py b/fittrackee/workouts/utils/workouts.py index f033177a..5872af11 100644 --- a/fittrackee/workouts/utils/workouts.py +++ b/fittrackee/workouts/utils/workouts.py @@ -12,7 +12,7 @@ from sqlalchemy import exc from werkzeug.datastructures import FileStorage from werkzeug.utils import secure_filename -from fittrackee import db +from fittrackee import appLog, db from fittrackee.files import get_absolute_file_path from fittrackee.users.models import User, UserSportPreference @@ -279,12 +279,26 @@ def get_new_file_path( return file_path +def delete_files( + absolute_gpx_filepath: Optional[str], absolute_map_filepath: Optional[str] +) -> None: + try: + if absolute_gpx_filepath and os.path.exists(absolute_gpx_filepath): + os.remove(absolute_gpx_filepath) + if absolute_map_filepath and os.path.exists(absolute_map_filepath): + os.remove(absolute_map_filepath) + except Exception: + appLog.error('Unable to delete files after processing error.') + + def process_one_gpx_file( params: Dict, filename: str, stopped_speed_threshold: float ) -> Workout: """ Get all data from a gpx file to create a workout with map image """ + absolute_gpx_filepath = None + absolute_map_filepath = None try: gpx_data, map_data, weather_data = get_gpx_info( params['file_path'], stopped_speed_threshold @@ -314,8 +328,10 @@ def process_one_gpx_file( absolute_map_filepath = get_absolute_file_path(map_filepath) generate_map(absolute_map_filepath, map_data) except (gpxpy.gpx.GPXXMLSyntaxException, TypeError) as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('error', 'error during gpx file parsing', e) except Exception as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('error', 'error during gpx processing', e) try: @@ -337,6 +353,7 @@ def process_one_gpx_file( db.session.commit() return new_workout except (exc.IntegrityError, ValueError) as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('fail', 'Error during workout save.', e) From ac6605c5c9d4efd3bc5f4a20acdbe0740b2bb5b9 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 10:57:04 +0100 Subject: [PATCH 3/7] API & Client - update error message on workout save error --- fittrackee/workouts/utils/workouts.py | 5 ++--- fittrackee_client/src/locales/en/api.json | 1 + fittrackee_client/src/locales/fr/api.json | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fittrackee/workouts/utils/workouts.py b/fittrackee/workouts/utils/workouts.py index 5872af11..65d0f3b3 100644 --- a/fittrackee/workouts/utils/workouts.py +++ b/fittrackee/workouts/utils/workouts.py @@ -8,7 +8,6 @@ from uuid import UUID import gpxpy.gpx import pytz from flask import current_app -from sqlalchemy import exc from werkzeug.datastructures import FileStorage from werkzeug.utils import secure_filename @@ -352,9 +351,9 @@ def process_one_gpx_file( db.session.add(new_segment) db.session.commit() return new_workout - except (exc.IntegrityError, ValueError) as e: + except Exception as e: delete_files(absolute_gpx_filepath, absolute_map_filepath) - raise WorkoutException('fail', 'Error during workout save.', e) + raise WorkoutException('error', 'error when saving workout', e) def is_gpx_file(filename: str) -> bool: diff --git a/fittrackee_client/src/locales/en/api.json b/fittrackee_client/src/locales/en/api.json index aaf23a63..96a6d551 100644 --- a/fittrackee_client/src/locales/en/api.json +++ b/fittrackee_client/src/locales/en/api.json @@ -8,6 +8,7 @@ "error during gpx file parsing": "Error during gpx file parsing.", "error during gpx processing": "Error during gpx processing.", "error on getting configuration": "Error on getting configuration.", + "error when saving workout": "Error when saving workout.", "error when updating configuration": "Error when updating configuration", "error, please try again or contact the administrator": "Error, please try again or contact the administrator.", "error, registration is disabled": "Error, registration is disabled.", diff --git a/fittrackee_client/src/locales/fr/api.json b/fittrackee_client/src/locales/fr/api.json index 31b14ccd..bf5676c3 100644 --- a/fittrackee_client/src/locales/fr/api.json +++ b/fittrackee_client/src/locales/fr/api.json @@ -8,6 +8,7 @@ "error during gpx file parsing": "Erreur lors de l'analyse du fichier.", "error during gpx processing": "Erreur lors du traitement du fichier gpx.", "error on getting configuration": "Erreur lors de la récupération de la configuration.", + "error when saving workout": "Erreur lors de l'enregistrement de la séance.", "error when updating configuration": "Erreur lors de la mise à jour de la configuration", "error, please try again or contact the administrator": "Erreur, veuillez réessayer ou contacter l'administrateur.", "error, registration is disabled": "Erreur, les inscriptions sont désactivées.", From 51fe110a6f9782442c01175bcdb1ab919fe53516 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 11:17:19 +0100 Subject: [PATCH 4/7] build client dist files --- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- .../dist/static/js/{admin.4313b7d9.js => admin.3f508723.js} | 2 +- .../static/js/{admin.4313b7d9.js.map => admin.3f508723.js.map} | 2 +- fittrackee/dist/static/js/app.0e84b321.js | 2 ++ fittrackee/dist/static/js/app.0e84b321.js.map | 1 + fittrackee/dist/static/js/app.4a1985d7.js | 2 -- fittrackee/dist/static/js/app.4a1985d7.js.map | 1 - .../dist/static/js/{profile.98e985f4.js => profile.9d91816f.js} | 2 +- .../js/{profile.98e985f4.js.map => profile.9d91816f.js.map} | 2 +- .../dist/static/js/{reset.572eac46.js => reset.685c3c25.js} | 2 +- .../static/js/{reset.572eac46.js.map => reset.685c3c25.js.map} | 2 +- .../js/{statistics.d3c3c7bd.js => statistics.f4227d0e.js} | 2 +- .../{statistics.d3c3c7bd.js.map => statistics.f4227d0e.js.map} | 2 +- .../static/js/{workouts.0fd5b207.js => workouts.a06ab85f.js} | 2 +- .../js/{workouts.0fd5b207.js.map => workouts.a06ab85f.js.map} | 2 +- 17 files changed, 16 insertions(+), 16 deletions(-) rename fittrackee/dist/static/js/{admin.4313b7d9.js => admin.3f508723.js} (96%) rename fittrackee/dist/static/js/{admin.4313b7d9.js.map => admin.3f508723.js.map} (98%) create mode 100644 fittrackee/dist/static/js/app.0e84b321.js create mode 100644 fittrackee/dist/static/js/app.0e84b321.js.map delete mode 100644 fittrackee/dist/static/js/app.4a1985d7.js delete mode 100644 fittrackee/dist/static/js/app.4a1985d7.js.map rename fittrackee/dist/static/js/{profile.98e985f4.js => profile.9d91816f.js} (98%) rename fittrackee/dist/static/js/{profile.98e985f4.js.map => profile.9d91816f.js.map} (99%) rename fittrackee/dist/static/js/{reset.572eac46.js => reset.685c3c25.js} (99%) rename fittrackee/dist/static/js/{reset.572eac46.js.map => reset.685c3c25.js.map} (99%) rename fittrackee/dist/static/js/{statistics.d3c3c7bd.js => statistics.f4227d0e.js} (98%) rename fittrackee/dist/static/js/{statistics.d3c3c7bd.js.map => statistics.f4227d0e.js.map} (99%) rename fittrackee/dist/static/js/{workouts.0fd5b207.js => workouts.a06ab85f.js} (99%) rename fittrackee/dist/static/js/{workouts.0fd5b207.js.map => workouts.a06ab85f.js.map} (99%) diff --git a/fittrackee/dist/index.html b/fittrackee/dist/index.html index 8369cf5a..6a2f7b22 100644 --- a/fittrackee/dist/index.html +++ b/fittrackee/dist/index.html @@ -1 +1 @@ -FitTrackee
\ No newline at end of file +FitTrackee
\ No newline at end of file diff --git a/fittrackee/dist/service-worker.js b/fittrackee/dist/service-worker.js index ad59d68d..5d289367 100644 --- a/fittrackee/dist/service-worker.js +++ b/fittrackee/dist/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let s,i={};const e=(e,t)=>(e=new URL(e+".js",t).href,i[e]||new Promise((i=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=i,document.head.appendChild(s)}else s=e,importScripts(e),i()})).then((()=>{let s=i[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(i[a])return;let l={};const n=s=>e(s,a),o={module:{uri:a},exports:l,require:n};i[a]=Promise.all(t.map((s=>o[s]||n(s)))).then((s=>(r(...s),l)))}}define(["./workbox-db5fc017"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"06af823d4f4f780da39dedddaaa49bd7"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.e504ceb2.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.9f83730d.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.c2966dd5.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.d72fe9e5.js",revision:null},{url:"/static/js/431.386df171.js",revision:null},{url:"/static/js/633.23ee7aff.js",revision:null},{url:"/static/js/858.922b6a43.js",revision:null},{url:"/static/js/93.37abd50d.js",revision:null},{url:"/static/js/admin.4313b7d9.js",revision:null},{url:"/static/js/app.4a1985d7.js",revision:null},{url:"/static/js/chunk-vendors.504d6d07.js",revision:null},{url:"/static/js/password.c0f2f8e4.js",revision:null},{url:"/static/js/password.de.b81f881f.js",revision:null},{url:"/static/js/password.en.b4ea7085.js",revision:null},{url:"/static/js/password.fr.1d179591.js",revision:null},{url:"/static/js/password.it.be465eec.js",revision:null},{url:"/static/js/profile.98e985f4.js",revision:null},{url:"/static/js/reset.572eac46.js",revision:null},{url:"/static/js/statistics.d3c3c7bd.js",revision:null},{url:"/static/js/workouts.0fd5b207.js",revision:null}],{})})); +if(!self.define){let s,i={};const e=(e,t)=>(e=new URL(e+".js",t).href,i[e]||new Promise((i=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=i,document.head.appendChild(s)}else s=e,importScripts(e),i()})).then((()=>{let s=i[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(i[a])return;let l={};const n=s=>e(s,a),o={module:{uri:a},exports:l,require:n};i[a]=Promise.all(t.map((s=>o[s]||n(s)))).then((s=>(r(...s),l)))}}define(["./workbox-db5fc017"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"4a22e7ebcadb1a7830a7f42995dd8bb9"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.e504ceb2.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.9f83730d.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.c2966dd5.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.d72fe9e5.js",revision:null},{url:"/static/js/431.386df171.js",revision:null},{url:"/static/js/633.23ee7aff.js",revision:null},{url:"/static/js/858.922b6a43.js",revision:null},{url:"/static/js/93.37abd50d.js",revision:null},{url:"/static/js/admin.3f508723.js",revision:null},{url:"/static/js/app.0e84b321.js",revision:null},{url:"/static/js/chunk-vendors.504d6d07.js",revision:null},{url:"/static/js/password.c0f2f8e4.js",revision:null},{url:"/static/js/password.de.b81f881f.js",revision:null},{url:"/static/js/password.en.b4ea7085.js",revision:null},{url:"/static/js/password.fr.1d179591.js",revision:null},{url:"/static/js/password.it.be465eec.js",revision:null},{url:"/static/js/profile.9d91816f.js",revision:null},{url:"/static/js/reset.685c3c25.js",revision:null},{url:"/static/js/statistics.f4227d0e.js",revision:null},{url:"/static/js/workouts.a06ab85f.js",revision:null}],{})})); //# sourceMappingURL=service-worker.js.map diff --git a/fittrackee/dist/service-worker.js.map b/fittrackee/dist/service-worker.js.map index 94b94622..d168501b 100644 --- a/fittrackee/dist/service-worker.js.map +++ b/fittrackee/dist/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/db25ef0d317eefce6c68dc0b4aa9d64f/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"06af823d4f4f780da39dedddaaa49bd7\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.e504ceb2.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.9f83730d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.c2966dd5.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.d72fe9e5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.386df171.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.23ee7aff.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.922b6a43.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.37abd50d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.4313b7d9.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.4a1985d7.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.504d6d07.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.c0f2f8e4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.de.b81f881f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.en.b4ea7085.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.fr.1d179591.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.it.be465eec.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.98e985f4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.572eac46.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.d3c3c7bd.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.0fd5b207.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/a82cfb9750c46e3a4b728a6c805ebd88/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"4a22e7ebcadb1a7830a7f42995dd8bb9\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.e504ceb2.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.9f83730d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.c2966dd5.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.d72fe9e5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.386df171.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.23ee7aff.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.922b6a43.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.37abd50d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.3f508723.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.0e84b321.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.504d6d07.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.c0f2f8e4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.de.b81f881f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.en.b4ea7085.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.fr.1d179591.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.it.be465eec.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.9d91816f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.685c3c25.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.f4227d0e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.a06ab85f.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file diff --git a/fittrackee/dist/static/js/admin.4313b7d9.js b/fittrackee/dist/static/js/admin.3f508723.js similarity index 96% rename from fittrackee/dist/static/js/admin.4313b7d9.js rename to fittrackee/dist/static/js/admin.3f508723.js index 912a86ee..0556ccf8 100644 --- a/fittrackee/dist/static/js/admin.4313b7d9.js +++ b/fittrackee/dist/static/js/admin.3f508723.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[328],{6e3:function(t,e,i){i.r(e),i.d(e,{default:function(){return _}});var a=i(6252),n=i(2262),s=i(8273),c=i(5801),r=i(9917);const S=t=>((0,a.dD)("data-v-64629971"),t=t(),(0,a.Cn)(),t),l={id:"admin",class:"view"},p={key:0,class:"container"},u=S((()=>(0,a._)("div",{id:"bottom"},null,-1)));var T=(0,a.aZ)({__name:"AdminView",setup(t){const e=(0,r.o)(),i=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_CONFIG])),S=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_STATS])),T=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.IS_ADMIN])),d=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.USER_LOADING]));return(0,a.wF)((()=>e.dispatch(c.SY.ACTIONS.GET_APPLICATION_STATS))),(t,e)=>{const c=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",l,[(0,n.SU)(d)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",p,[(0,n.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,appConfig:(0,n.SU)(i),appStatistics:(0,n.SU)(S)},null,8,["appConfig","appStatistics"])):((0,a.wg)(),(0,a.j4)(s.Z,{key:1})),u]))])}}}),d=i(3744);const o=(0,d.Z)(T,[["__scopeId","data-v-64629971"]]);var _=o}}]); -//# sourceMappingURL=admin.4313b7d9.js.map \ No newline at end of file +//# sourceMappingURL=admin.3f508723.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/admin.4313b7d9.js.map b/fittrackee/dist/static/js/admin.3f508723.js.map similarity index 98% rename from fittrackee/dist/static/js/admin.4313b7d9.js.map rename to fittrackee/dist/static/js/admin.3f508723.js.map index cfa24ad4..866345e7 100644 --- a/fittrackee/dist/static/js/admin.4313b7d9.js.map +++ b/fittrackee/dist/static/js/admin.3f508723.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/admin.4313b7d9.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig, IAppStatistics } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminView',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appStatistics: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n )\n const isAuthUserAmin: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n )\n const userLoading: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\n onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_unref(userLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(isAuthUserAmin))\n ? (_openBlock(), _createBlock(_component_router_view, {\n key: 0,\n appConfig: _unref(appConfig),\n appStatistics: _unref(appStatistics)\n }, null, 8, [\"appConfig\", \"appStatistics\"]))\n : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n _hoisted_3\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/admin.3f508723.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig, IAppStatistics } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminView',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appStatistics: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n )\n const isAuthUserAmin: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n )\n const userLoading: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\n onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_unref(userLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(isAuthUserAmin))\n ? (_openBlock(), _createBlock(_component_router_view, {\n key: 0,\n appConfig: _unref(appConfig),\n appStatistics: _unref(appStatistics)\n }, null, 8, [\"appConfig\", \"appStatistics\"]))\n : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n _hoisted_3\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.0e84b321.js b/fittrackee/dist/static/js/app.0e84b321.js new file mode 100644 index 00000000..15df15c9 --- /dev/null +++ b/fittrackee/dist/static/js/app.0e84b321.js @@ -0,0 +1,2 @@ +(function(){var e={5167:function(e,n,t){"use strict";var r=t(6154),a=t(8566),o=t(2894),i=t(5801),s=t(2024);const l=r.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,a.a)(e);a.j.set(t,n);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const n=`Bearer ${r}`;e.headers&&e.headers.Authorization!==n&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,a.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,a.a)(e.response.config),Promise.reject(e)))),n["Z"]=l},8566:function(e,n,t){"use strict";t.d(n,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:n,url:t,params:r={},data:a={}}=e;return[n,t,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const n=a(e);if(r.has(n)){const e=r.get(n)||{};e?.abort(),r.delete(n)}return n}},2540:function(e,n,t){"use strict";var r=t(9150);const a=["nb"];function o(){const e=t(4612),n={};return e.keys().forEach((t=>{const r=t.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];n[a]=e(t).default}})),n}n["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},3010:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Über diese Instanz"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["unter ",t(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Quellcode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Wetterdaten von:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt."])},TEXT:e=>{const{normalize:n}=e;return n(["Detaillierte Instanz-Informationen"])}},ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt-E-Mail des Administrators"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. Dateianzahl im zip Archiv"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. Anzahl aktiver Nutzer"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Neue E-Mail"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Kein Text eingegeben"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Das wasswort wurde zurückgesetzt."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainings existieren"])},IMAGE:e=>{const{normalize:n}=e;return n(["Bild"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aktualisiere Anwemdungskonfiguration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:n}=e;return n(["Nutzer"])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["Adminstatus"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Accountstatus"])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["Trainingsanzahl"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte entfernen"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Die E-Mail Adresse wurde aktualisiert."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netzwerkfehler."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum vollständigen Export existiert bereits."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fehler beim Einlesen der GPX-Datei"])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fehler bei der GPX-Verarbeitung."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:n}=e;return n(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:n}=e;return n(["Keine Datei ausgewählt."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum Datenexport existiert bereits."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Gebe ein gültiges Authentifizierungstoken an."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sportart existiert nicht."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrierung erfolgreich."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Du hast keine Berechtigung."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["Nächste"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["Vorhergehende"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorisieren"])},BACK:e=>{const{normalize:n}=e;return n(["Zurück"])},CANCEL:e=>{const{normalize:n}=e;return n(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:n}=e;return n(["Deaktivieren"])},EDIT:e=>{const{normalize:n}=e;return n(["Bearbeiten"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aktivieren"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NO:e=>{const{normalize:n}=e;return n(["Nein"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Daten-Export anfragen"])},RESET:e=>{const{normalize:n}=e;return n(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Speichern"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["Über"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bestätigung"])},CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["Tag"]),n(["Tage"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["Dokumentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Versteckt"])},HOME:e=>{const{normalize:n}=e;return n(["Startseite"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["aufsteigend"])},DESC:e=>{const{normalize:n}=e;return n(["absteigend"])},LABEL:e=>{const{normalize:n}=e;return n(["sortieren"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sortiert nach"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["pro Seite"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Dieser Monat"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Etwas lief schief"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["ID"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Erstellt am"])},NAME:e=>{const{normalize:n}=e;return n(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Geltungsbereich"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf auth-Endpunkte"])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf workouts-Endpunkte"])}},URL:e=>{const{normalize:n}=e;return n(["Anwendungs-URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2-Anwendungen"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Anwendung ",t(r(0))," fragt an:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n([t(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:n}=e;return n(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(["Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst."])},TITLE:e=>{const{normalize:n}=e;return n(["Account löschen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\n\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Änderungen unserer Datenschutzrichtlinie"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Die folgenden Informationen werden gesammelt:\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\n- Technische Informationen (Browser und Betriebssystem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welche Informationen sammeln wir?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\n\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\n\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\n\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen."])},TITLE:e=>{const{normalize:n}=e;return n(["Geben wir Informationen an Außenstehende weiter?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst."])},TITLE:e=>{const{normalize:n}=e;return n(["Wie schützen wir deinen Informationen?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken."])},TITLE:e=>{const{normalize:n}=e;return n(["Für was verwenden wir deine Informationen?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\n\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\n\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein."])},TITLE:e=>{const{normalize:n}=e;return n(["Seitennutzung durch Kinder"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu."])},TITLE:e=>{const{normalize:n}=e;return n(["Deine Zustimmung"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Letztes Update"])},TITLE:e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergsteigen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rudern"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Gehen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistik"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["Monat"])},week:e=>{const{normalize:n}=e;return n(["Woche"])},year:e=>{const{normalize:n}=e;return n(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:n}=e;return n(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Gebe ein Passwort ein"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Datenexport"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archiv herunterladen"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generiere Link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Du kannst alle 24 Stunden ein Archiv anfragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fehlgeschlagen (bitte frage einen anderen Export an)"])},in_progress:e=>{const{normalize:n}=e;return n(["in Arbeit..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte fordere ein neues Passworts an."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ich möchte meinen Account löschen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Datenschutzrichtlinie wurde aktualisiert, bitte ",t(r(0))," sie vor dem Fortfahren."])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmeldung"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Abmelden"])},LOG_IN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Passwort vergessen?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["mittel"])},GOOD:e=>{const{normalize:n}=e;return n(["gut"])},LABEL:e=>{const{normalize:n}=e;return n(["Passwortstärke"])},STRONG:e=>{const{normalize:n}=e;return n(["start"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Schreibe einige, aber nicht alle Buchstaben groß."])},anotherWord:e=>{const{normalize:n}=e;return n(["Füge weitere weniger gebräuchliche Wörter hinzu."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},capitalization:e=>{const{normalize:n}=e;return n(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:n}=e;return n(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},l33t:e=>{const{normalize:n}=e;return n(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},noNeed:e=>{const{normalize:n}=e;return n(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:n}=e;return n(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermeide Angabe von letzten Jahreszahlen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermeide wiederholungen von Wörtern und Zeichen."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},sequences:e=>{const{normalize:n}=e;return n(["Vermeide gebräuchliche Zeichenfolgen."])},useWords:e=>{const{normalize:n}=e;return n(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])}},WEAK:e=>{const{normalize:n}=e;return n(["schwach"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Dein Passwort wurde aktualisiert. Klicke ",t(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Zurück zum Profil"])},BIO:e=>{const{normalize:n}=e;return n(["Biographie"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:n}=e;return n(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Bitte ",t(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Erster Tag der Woche"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Vorname"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nachname"])},LOCATION:e=>{const{normalize:n}=e;return n(["Ort"])},MONDAY:e=>{const{normalize:n}=e;return n(["Montag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Bildausgabe"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Bild entfernen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Bild aktualisieren"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Einstellungsausgabe"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},COLOR:e=>{const{normalize:n}=e;return n(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["aktiv"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Geschwindigkeitsschwellenwert für Stopp"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sportarten-Einstellungsausgabe"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["Konto"])},APPS:e=>{const{normalize:n}=e;return n(["Anwendungen"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE:e=>{const{normalize:n}=e;return n(["Profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["Sportarten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Zeitzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperiales System (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Einheiten für die Distanz"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisches System (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ich habe die ",t(r(0))," gelesen und stimme ihr zu."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Entschuldigung, die Registrierung ist deaktiviert."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["E-Mail zur Kontobestätigung erneut senden"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},REVIEW:e=>{const{normalize:n}=e;return n(["überprüfen"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Dieser Account ist inaktiv."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["Benutzerbild"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Du hast die ",t(r(0))," akzeptiert."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["Analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["Aufstieg"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschnittsgeschwindigkeit"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["zurück zum Training"])},DATE:e=>{const{normalize:n}=e;return n(["Datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["zeige Filter"])},DISTANCE:e=>{const{normalize:n}=e;return n(["Entfernung"])},DURATION:e=>{const{normalize:n}=e;return n(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:n}=e;return n(["Höhe"])},END:e=>{const{normalize:n}=e;return n(["Ende"])},FROM:e=>{const{normalize:n}=e;return n(["Von"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberge Filter"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["Die Distanz muss größer als 0 sein"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["Die Dauer muss größer als 0 Sekunden sein"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nächstes Training"])},NOTES:e=>{const{normalize:n}=e;return n(["Anmerkungen"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Keine Trainings."])},PAUSES:e=>{const{normalize:n}=e;return n(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorheriges Training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["Aufzeichnung"]),n(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["Segment"]),n(["Segmente"])])},SPEED:e=>{const{normalize:n}=e;return n(["Geschwindigkeit"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["Sportart"]),n(["Sportarten"])])},START:e=>{const{normalize:n}=e;return n(["Start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:n}=e;return n(["Titel"])},TO:e=>{const{normalize:n}=e;return n(["bis"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Füge erstes Training hinzu!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["klarer Tag"])},"clear-night":e=>{const{normalize:n}=e;return n(["klare Nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["wolkig"])},fog:e=>{const{normalize:n}=e;return n(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:n}=e;return n(["Regen"])},sleet:e=>{const{normalize:n}=e;return n(["Schneeregen"])},snow:e=>{const{normalize:n}=e;return n(["Schnee"])},wind:e=>{const{normalize:n}=e;return n(["Wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["Temperatur"])},WIND:e=>{const{normalize:n}=e;return n(["Wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OSO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SO"])},SSE:e=>{const{normalize:n}=e;return n(["SSO"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["ohne .gpx Datei"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["mit .gpx Datei"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["Training"]),n(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["oder .zip Datei mit .gpx Dateien"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},2709:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["About this instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["under ",t(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Source code"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weather data from:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Any additional information that may be useful to your users. Markdown syntax can be used."])},TEXT:e=>{const{normalize:n}=e;return n(["Detailed instance information"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activate account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Add/remove admin rights, delete user account."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email for contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. files of zip archive"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["If 0, no limitation on registration."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. number of active users"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to delete ",t(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to reset ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Current email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["New email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["No text entered"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The password has been reset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workouts exist"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Update application configuration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["user"]),n(["users"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["registration date"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["username"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["workout count"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Remove admin rights"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The email address has been updated."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Network Error."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["At least one file in zip archive exceeds size limit, please check the archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["A completed export request already exists."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: valid email must be provided."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Error during gpx file parsing."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Error during gpx processing."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Error on getting configuration."])},"error when saving workout":e=>{const{normalize:n}=e;return n(["Error when saving workout."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Invalid credentials."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:n}=e;return n(["No file provided."])},"no selected file":e=>{const{normalize:n}=e;return n(["No selected file."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["A data export request already exists."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Provide a valid auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expired. Please log in again."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sport does not exist."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Successfully registered."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["The number of files in the archive exceeds the limit."])},"user does not exist":e=>{const{normalize:n}=e;return n(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["You do not have permissions."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["next"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["previous"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Authorize"])},BACK:e=>{const{normalize:n}=e;return n(["Back"])},CANCEL:e=>{const{normalize:n}=e;return n(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Delete my account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disable"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit"])},ENABLE:e=>{const{normalize:n}=e;return n(["Enable"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Request data export"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Submit"])},YES:e=>{const{normalize:n}=e;return n(["Yes"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["day"]),n(["days"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Displayed"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation"])},HERE:e=>{const{normalize:n}=e;return n(["here"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Hidden"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascending"])},DESC:e=>{const{normalize:n}=e;return n(["descending"])},LABEL:e=>{const{normalize:n}=e;return n(["sort"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["order by"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["This month"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page not found"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Something went wrong"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Application description"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Application name"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["Application URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 applications"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The application ",t(r(0))," is requesting:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Authorize ",t(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Delete application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Add an application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application not found!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["All existing associated tokens have been revoked."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['You can request the deletion of your account at any time by going to this address (after logging in) and clicking on "Delete My Account" button in your account edition.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account deletion"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["If we decide to change our privacy policy, we will post those changes on this page.\n\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Changes to our Privacy Policy"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["The following information are collected:\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\n- Technical information (browser name and operating system)."])},TITLE:e=>{const{normalize:n}=e;return n(["What information do we collect?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\n\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \n\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\n\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password."])},TITLE:e=>{const{normalize:n}=e;return n(["Do we disclose any information to outside parties?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information."])},TITLE:e=>{const{normalize:n}=e;return n(["How do we protect your information?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\n- The email address you provide may be used to send you information or confirm your account modifications."])},TITLE:e=>{const{normalize:n}=e;return n(["What do we use your information for?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\n\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\n\nLaw requirements can be different if this server is in another jurisdiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Site usage by children"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["By using our site, you consent to our web site privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Your Consent"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Last update"])},TITLE:e=>{const{normalize:n}=e;return n(["privacy policy"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Electric)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Mountaineering"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rowing"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Walking"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistics"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["month"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Current password"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Enter a password"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Download archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generating link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["You can request an archive by 24 hours"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["errored (please request another export)"])},in_progress:e=>{const{normalize:n}=e;return n(["in progres..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["hide password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Invalid token, please request a new password reset."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["I want to delete my account"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The privacy policy has been updated, please ",t(r(0))," it before proceeding."])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["New password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["No users found."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Forgot password?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["At least 8 characters required."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["average"])},GOOD:e=>{const{normalize:n}=e;return n(["good"])},LABEL:e=>{const{normalize:n}=e;return n(["password strength"])},STRONG:e=>{const{normalize:n}=e;return n(["strong"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Capitalize some, but not all letters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Add more words that are less common."])},associatedYears:e=>{const{normalize:n}=e;return n(["Avoid years that are associated with you."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalize more than the first letter."])},dates:e=>{const{normalize:n}=e;return n(["Avoid dates and years that are associated with you."])},l33t:e=>{const{normalize:n}=e;return n(["Avoid predictable letter substitutions like ","@"," for a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Use longer keyboard patterns and change typing direction multiple times."])},noNeed:e=>{const{normalize:n}=e;return n(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:n}=e;return n(["If you use this password elsewhere, you should change it."])},recentYears:e=>{const{normalize:n}=e;return n(["Avoid recent years."])},repeated:e=>{const{normalize:n}=e;return n(["Avoid repeated words and characters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Avoid reversed spellings of common words."])},sequences:e=>{const{normalize:n}=e;return n(["Avoid common character sequences."])},useWords:e=>{const{normalize:n}=e;return n(["Use multiple words, but avoid common phrases."])}},WEAK:e=>{const{normalize:n}=e;return n(["weak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Your password have been updated. Click ",t(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account edition"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Back to profile"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Birth date"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Date display format"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Please ",t(r(0))," to change your email address again or contact the administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["First day of week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["First name"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Last name"])},LOCATION:e=>{const{normalize:n}=e;return n(["Location"])},MONDAY:e=>{const{normalize:n}=e;return n(["Monday"])},PICTURE:e=>{const{normalize:n}=e;return n(["Picture"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Picture edition"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Remove picture"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Update picture"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferences edition"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacy policy"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registration date"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["active"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["stopped speed threshold"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sports preferences edition"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["picture"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["privacy policy"])},PROFILE:e=>{const{normalize:n}=e;return n(["profile"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperial system (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Units for distance"])},METRIC:e=>{const{normalize:n}=e;return n(["Metric system (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["I have read and agree to the ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registration is disabled."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Resend account confirmation email"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset your password"])},REVIEW:e=>{const{normalize:n}=e;return n(["review"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["This user account is inactive."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["user picture"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["You have accepted the ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Add a workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analysis"])},ASCENT:e=>{const{normalize:n}=e;return n(["ascent"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["average speed"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["ave. speed"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["back to workout"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["display filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["duration"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Edit the workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevation"])},END:e=>{const{normalize:n}=e;return n(["end"])},FROM:e=>{const{normalize:n}=e;return n(["from"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["hide filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Both elevation values must be provided and be greater than or equal to 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. altitude"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max files"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max size"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Next workout"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["No file provided"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["no folder inside"])},NO_MAP:e=>{const{normalize:n}=e;return n(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["No next workout"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["No previous workout"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["No records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["No workouts."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Previous workout"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Ave. speed"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Farthest distance"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Highest ascent"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Longest duration"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["remaining characters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["speed"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["start elevation axis at zero"])},TITLE:e=>{const{normalize:n}=e;return n(["title"])},TO:e=>{const{normalize:n}=e;return n(["to"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Upload one!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["clear day"])},"clear-night":e=>{const{normalize:n}=e;return n(["clear night"])},cloudy:e=>{const{normalize:n}=e;return n(["cloudy"])},fog:e=>{const{normalize:n}=e;return n(["fog"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["partly cloudy night"])},rain:e=>{const{normalize:n}=e;return n(["rain"])},sleet:e=>{const{normalize:n}=e;return n(["sleet"])},snow:e=>{const{normalize:n}=e;return n(["snow"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidity"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperature"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["without .gpx file"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["with .gpx file"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["or .zip file containing .gpx files"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},5479:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["A propos de cette instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["sous licence ",t(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Code source (en)"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Source des données météo :"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée."])},TEXT:e=>{const{normalize:n}=e;return n(["Information détaillée de l'instance"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activer le compte"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email de l'administrateur pour contact "])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Nombre max. de fichiers dans une archive zip "])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Si égal à 0, pas limite d'inscription"])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Nombre maximum d'utilisateurs actifs "])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:n}=e;return n(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",t(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",t(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nouvelle adresse email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["pas de texte saisi"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Le mot de passe a été réinitialisé."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["des séances existent"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Configurer l'application."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Changer l'email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utilisateur"]),n(["utilisateurs"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["status administrateur"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["statut du compte"])},USERNAME:e=>{const{normalize:n}=e;return n(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["nombre de séances"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Retirer les droits d'admin"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'adresse email a été mise à jour."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Erreur réseau."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Une demande d'export terminée existe déjà."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Erreur lors de l'analyse du fichier."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Erreur lors du traitement du fichier gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la récupération de la configuration."])},"error when saving workout":e=>{const{normalize:n}=e;return n(["Erreur lors de l'enregistrement de la séance."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Jeton de connexion, merci de vous reconnecter."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"no file part":e=>{const{normalize:n}=e;return n(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:n}=e;return n(["Pas de fichier sélectionné."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Une demande d'export de données est en cours"])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Merci de fournir un jeton de connexion valide."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Ce sport n'existe pas."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["suivant"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["précédent"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autoriser"])},BACK:e=>{const{normalize:n}=e;return n(["Retour"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:n}=e;return n(["Désactiver"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier"])},ENABLE:e=>{const{normalize:n}=e;return n(["Activer"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtrer"])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},NO:e=>{const{normalize:n}=e;return n(["Non"])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Demander un export de données"])},RESET:e=>{const{normalize:n}=e;return n(["Réinit."])},SUBMIT:e=>{const{normalize:n}=e;return n(["Valider"])},YES:e=>{const{normalize:n}=e;return n(["Oui"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["à propos"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["jour"]),n(["jours"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Affiché"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["ici"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Masqué"])},HOME:e=>{const{normalize:n}=e;return n(["Accueil"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascendant"])},DESC:e=>{const{normalize:n}=e;return n(["descendant"])},LABEL:e=>{const{normalize:n}=e;return n(["tri"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["trier par "])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Ce mois-ci"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page introuvable"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Une erreur s'est produite"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Créée le"])},NAME:e=>{const{normalize:n}=e;return n(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:n}=e;return n(["URL de l'application"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applications OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'application ",t(r(0))," demande les accès suivants :"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autoriser ",t(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application introuvable !"])},NO_APPS:e=>{const{normalize:n}=e;return n(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tous les jetons associés existants ont été révoqués."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous "Supprimer mon compte" dans l\'espace de mise à jour de votre compte.'])},TITLE:e=>{const{normalize:n}=e;return n(["Suppression du compte"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\n\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Modifications de notre politique de confidentialité"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Les informations suivantes sont collectées :\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\n- Données techniques (nom du navigateur et du système d'exploitation)."])},TITLE:e=>{const{normalize:n}=e;return n(["Quelles sont les informations que nous recueillons ?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\n\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\n\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\n\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe."])},TITLE:e=>{const{normalize:n}=e;return n(["Divulguons-nous des informations à des tiers ?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment protégeons-nous vos informations ?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment utilisons-nous vos informations ?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\n\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\n\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Protection des mineurs"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["En utilisant notre site, vous acceptez la politique de confidentialité de notre site web."])},TITLE:e=>{const{normalize:n}=e;return n(["Votre consentement"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Dernière mise à jour"])},TITLE:e=>{const{normalize:n}=e;return n(["politique de confidentialité"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["VTT (Électrique)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinisme"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Aviron"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Marche"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiques"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mois"])},week:e=>{const{normalize:n}=e;return n(["semaine"])},year:e=>{const{normalize:n}=e;return n(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:n}=e;return n(["Courriel"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Saisissez un mot de passe"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Export des données"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Télécharger l'archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["lien en cours de génération..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Vous pouvez demander un export par 24h"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["en erreur (veuillez demander une nouvelle archive)"])},in_progress:e=>{const{normalize:n}=e;return n(["en cours..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Je souhaite supprimer mon compte"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La politique de confidentialité a été mise à jour. Veuillez l'",t(r(0))," avant de poursuivre."])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Se déconnecter"])},LOG_IN:e=>{const{normalize:n}=e;return n(["connecter"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Mot de passe oublié ?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["8 caractères minimum."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["moyenne"])},GOOD:e=>{const{normalize:n}=e;return n(["bonne"])},LABEL:e=>{const{normalize:n}=e;return n(["robustesse du mot de passe"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Mettez quelques lettres en majuscules, mais pas toutes."])},anotherWord:e=>{const{normalize:n}=e;return n(["Ajoutez des mots moins courants."])},associatedYears:e=>{const{normalize:n}=e;return n(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:n}=e;return n(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},l33t:e=>{const{normalize:n}=e;return n(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},noNeed:e=>{const{normalize:n}=e;return n(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:n}=e;return n(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])},recentYears:e=>{const{normalize:n}=e;return n(["Évitez les dernières années."])},repeated:e=>{const{normalize:n}=e;return n(["Évitez les mots et les caractères répétés."])},reverseWords:e=>{const{normalize:n}=e;return n(["Évitez les orthographes inversées des mots courants."])},sequences:e=>{const{normalize:n}=e;return n(["Évitez les séquences de caractères courantes."])},useWords:e=>{const{normalize:n}=e;return n(["Utilisez plusieurs mots, mais évitez les phrases courantes."])}},WEAK:e=>{const{normalize:n}=e;return n(["faible"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Votre mot de passe a été mis à jour. Cliquez ",t(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Revenir au profil"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Veuillez vous ",t(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Prénom"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nom"])},LOCATION:e=>{const{normalize:n}=e;return n(["Lieu"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lundi"])},PICTURE:e=>{const{normalize:n}=e;return n(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour de l'image de profil"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Supprimer"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Mettre à jour l'image"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Politique de confidentialité"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Date d'inscription"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actif"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["seuil de vitesse arrêtée"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences des sports"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["compte"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["image"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["préférences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["politique de confidentialité"])},PROFILE:e=>{const{normalize:n}=e;return n(["profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Fuseau horaire"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Système impérial (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unités pour les distances"])},METRIC:e=>{const{normalize:n}=e;return n(["Système métrique (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["J'ai lu et accepte la ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinitialiser votre mot de passe"])},REVIEW:e=>{const{normalize:n}=e;return n(["accepter"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Le compte de cet utilisateur est inactif."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["photo de l'utilisateur"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Vous avez accepté la ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["revenir à la séance"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["afficher les filtres"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["durée"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifier la séance"])},ELEVATION:e=>{const{normalize:n}=e;return n(["altitude"])},END:e=>{const{normalize:n}=e;return n(["fin"])},FROM:e=>{const{normalize:n}=e;return n(["à partir de"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["masquer les filtres"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude max"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["taille max. "])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance suivante"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["pas de répertoire"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Pas de séances."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance précédente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["vitesse"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["début"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titre"])},TO:e=>{const{normalize:n}=e;return n(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajoutez votre première séance !"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["ensoleillé"])},"clear-night":e=>{const{normalize:n}=e;return n(["nuit claire"])},cloudy:e=>{const{normalize:n}=e;return n(["nuageux"])},fog:e=>{const{normalize:n}=e;return n(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:n}=e;return n(["pluie"])},sleet:e=>{const{normalize:n}=e;return n(["neige fondue"])},snow:e=>{const{normalize:n}=e;return n(["neige"])},wind:e=>{const{normalize:n}=e;return n(["venteux"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidité"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["température"])},WIND:e=>{const{normalize:n}=e;return n(["vent"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNO"])},NW:e=>{const{normalize:n}=e;return n(["NO"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSO"])},SW:e=>{const{normalize:n}=e;return n(["SO"])},W:e=>{const{normalize:n}=e;return n(["O"])},WNW:e=>{const{normalize:n}=e;return n(["ONO"])},WSW:e=>{const{normalize:n}=e;return n(["OSO"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["sans fichier .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["avec un fichier .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["séance"]),n(["séances"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["ou une archive .zip contenant des fichiers .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},6013:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contatta l'amministratore"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee è un tracker self-hosted per attività outdoor."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sotto licenza ",t(r(0))," "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Codice sorgente"])}},a={ACTION:e=>{const{normalize:n}=e;return n(["Azione"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Attiva account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Amministrazione"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aggiungi/rimuovi permessi, elimina account utente."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicazione"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email di contatto dell'amministratore"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di files zip"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Se settato a 0, non ci sono limiti per le registrazioni."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di utenti attivi"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["nessuna mail di contatto"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dei file caricabili (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Configurazione applicazione"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dell'archivio zip (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Ritorna ad amministrazione"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler eliminare ",t(r(0))," account? Tutti i dati verranno persi, quest'azione non può essere annullata."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler resettare ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Email corrente"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Elimina utente"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'invio di email è disabilitato."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Attiva/Disattiva sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nuova email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["La password è stata reimpostata."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento disabilitata."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento abilitata."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workout esistono"])},IMAGE:e=>{const{normalize:n}=e;return n(["Immagine"])},LABEL:e=>{const{normalize:n}=e;return n(["Etichetta"])}},TITLE:e=>{const{normalize:n}=e;return n(["Amministrazione sport"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aggiorna configurazione applicazione."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aggiorna email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utente"]),n(["utenti"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["stato admin"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["data di registrazione"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["stato account"])},USERNAME:e=>{const{normalize:n}=e;return n(["nome utente"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["numero di workout"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Aggiungi permessi di amministratore"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Rimuovi permessi di amministratore"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'indirizzo email è stato aggiornato."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Errore di rete."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amminstratore."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: dev'essere inserita un'email valida."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Errore nella lettura del file gpx."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Errore nell'elaborazione del file gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Errore nella lettura della configurazione."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Errore nell'aggiornamento della configurazione"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Errore, per favore riprova o contatta l'amministratore."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Errore, la registrazione è disabilitata."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File con estensione non permessa."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La dimensione del file è maggiore di quella massima permessa."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Credenziali errate."])},"invalid payload":e=>{const{normalize:n}=e;return n(["I dati inseriti non sono validi."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nuova email dev'essere diversa dalla vecchia mail"])},"no file part":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"no selected file":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: la password inserita e la conferma non combaciano."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Insersci un token di autenticazione valido."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto. Per favore ripeti il log in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Mi dispiace, quell'username è già esistente."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Questo sport non esiste."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrato con successo."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Il numero di files nell'archivio supera il limite massimo permesso."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utente non esiste."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Dev'essere inserita un'email valida"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Non hai i permessi necessari."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["avanti"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["precedente"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Re-invia email di conferma"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorizza"])},BACK:e=>{const{normalize:n}=e;return n(["Indietro"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annulla"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Resetta filtri"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Elimina il mio account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disattiva"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica"])},ENABLE:e=>{const{normalize:n}=e;return n(["Attiva"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtra"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Invia"])},YES:e=>{const{normalize:n}=e;return n(["Si"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Conferma"])},CONTACT:e=>{const{normalize:n}=e;return n(["contatto"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["giorno"]),n(["giorni"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Mostrato"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentazione"])},HERE:e=>{const{normalize:n}=e;return n(["qui"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Nascosto"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["Dal più basso al più alto"])},DESC:e=>{const{normalize:n}=e;return n(["Dal più alto al più basso"])},LABEL:e=>{const{normalize:n}=e;return n(["ordina"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["ordina per"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totale"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Questo mese"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina non trovata"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout non trovato"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Qualcosa è andato storto"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amministratore."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi una nuova applicazione OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Descrizione applicazione"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Nome applicazione"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL redirect"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura alla configurazioen dell'applicazione."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a usersendpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["URL applicazione"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applicazioni OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare quest'app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'applicazione ",t(r(0))," sta chiedendo:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autorizzi ",t(r(0))," ad utilizzare il tuo account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copia nella clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Elimina applicazione"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi applicazione"])},NO_APP:e=>{const{normalize:n}=e;return n(["Applicazione non trovata!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["nessuna applicazione"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["nessuna descrizione"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Rimuovi tutti i tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler rimuovere tutti i token?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tutti i token esistenti associati sono stati rimossi."])}},d={},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Trasporto)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cicliscmo (Virtuale)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Escursioni"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Elettrica)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinismo"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Canottaggio"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Corsa"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Alpino)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Racchette da neve"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Sentieri"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Camminata"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiche"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mese"])},week:e=>{const{normalize:n}=e;return n(["settimana"])},year:e=>{const{normalize:n}=e;return n(["anno"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Non hai ricevuto istruzioni?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hai già un account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata"])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Password corrente"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Inserisci un indirizzo email valido."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Inserisci una password"])},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtra per username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["nascondi password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Token invalido, per favore richiedi un nuovo reset della password."])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nuova password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Nessun utente trovato."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Password dimenticata?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Inserisci almeno 8 caratteri."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Reset password"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["media"])},GOOD:e=>{const{normalize:n}=e;return n(["buona"])},LABEL:e=>{const{normalize:n}=e;return n(["sicurezza password"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Inserisci qualche maiuscola."])},anotherWord:e=>{const{normalize:n}=e;return n(["Aggiungi più parole che sono meno comuni."])},associatedYears:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},capitalization:e=>{const{normalize:n}=e;return n(["Inserisci maiuscole oltre alla prima lettera."])},dates:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},l33t:e=>{const{normalize:n}=e;return n(["Evita sostituzioni prevedibili, per esempio, ","@"," per la a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Usa patterns più lunghi e cambia direzione di scrittura più volte."])},noNeed:e=>{const{normalize:n}=e;return n(["Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole."])},pwned:e=>{const{normalize:n}=e;return n(["È consigliabile cambiare questa password se è utilizzata per altro."])},recentYears:e=>{const{normalize:n}=e;return n(["Evita date recenti."])},repeated:e=>{const{normalize:n}=e;return n(["Evita di ripetere lettere e parole."])},reverseWords:e=>{const{normalize:n}=e;return n(["Evita di scrivere parole al contrario."])},sequences:e=>{const{normalize:n}=e;return n(["Evita sequenze di caratteri comuni."])},useWords:e=>{const{normalize:n}=e;return n(["Usa più parole, ma evita frasi comuni."])}},WEAK:e=>{const{normalize:n}=e;return n(["bassa"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La tua password è stata aggiornata. Clicca ",t(r(0))," per effettuare il login."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Tipo di account"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Dati relativi alle salite (singoli, totale)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Ritorna al profilo"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Data di nascita"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Formato data"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica profilo"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze sport"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Per favore ",t(r(0))," per cambiare di nuovo la tua mail o contatta l'amministratore"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Primo giorno della settimana"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Nome"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Cognome"])},LOCATION:e=>{const{normalize:n}=e;return n(["Posizione"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lunedì"])},PICTURE:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Rimuovi foto"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Aggiorna foto"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profilo"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Data di registrazione"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["azione"])},COLOR:e=>{const{normalize:n}=e;return n(["colore"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disattivato dall'amministratore"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["attivo"])},LABEL:e=>{const{normalize:n}=e;return n(["etichetta"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Limite minimo di velocità"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze sport"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Il tuo account è stato creato con successo."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un link per attivare il tuo account è stato inviato all'indirizzo specificato."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Domenica"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["foto"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferenze"])},PROFILE:e=>{const{normalize:n}=e;return n(["profilo"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Sistema imperiale (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unità per la distanza"])},METRIC:e=>{const{normalize:n}=e;return n(["Sistema metrico (m, km, m/s, °C)"])}}},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Mi dispiace, la registrazione è disabilitata."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Re-invia email di conferma dell'account"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Resetta password"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["mostra password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Questo account è inattivo."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo "_".'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["foto profilo"])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Aggiungi un workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analisi"])},ASCENT:e=>{const{normalize:n}=e;return n(["salita"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["velocità media"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vel. media"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["ritorna al workout"])},DATE:e=>{const{normalize:n}=e;return n(["data"])},DESCENT:e=>{const{normalize:n}=e;return n(["discesa"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["mostra filtri"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distanza"])},DURATION:e=>{const{normalize:n}=e;return n(["durata"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifica il workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevazione"])},END:e=>{const{normalize:n}=e;return n(["fine"])},FROM:e=>{const{normalize:n}=e;return n(["da"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["file .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["nascondi filtri"])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distanza dev'essere maggiore di 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durata dev'essere maggiore di 0"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Ultimi workout"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica più workout"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine massima"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["file massimi"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["dimensione massima"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["velocità massima"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine minima"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Prossimo workout"])},NOTES:e=>{const{normalize:n}=e;return n(["note"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(['data dal file gpx, senza "pulizia"'])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Nessun file scelto"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["nessuna cartella all'interno"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Nessuna mappa"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout successivo"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Nessuna nota"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento precedente"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout precedente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Nessun record."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Nessun workout."])},PAUSES:e=>{const{normalize:n}=e;return n(["pause"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segmento precedente"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Workout precedente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vel. media"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distanza più lunga"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Salita più alta"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durata più lunga"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vel. massima"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["caratteri rimanenti"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segmento"]),n(["segmenti"])])},SPEED:e=>{const{normalize:n}=e;return n(["velocità"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["inizio"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Inizio e fine"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["partenza asse elevazione a 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titolo"])},TO:e=>{const{normalize:n}=e;return n(["a"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durata totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica file!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["cielo chiaro"])},"clear-night":e=>{const{normalize:n}=e;return n(["notte chiara"])},cloudy:e=>{const{normalize:n}=e;return n(["nuvoloso"])},fog:e=>{const{normalize:n}=e;return n(["nebbia"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["parzialmente nuvoloso"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["notte parzialmente nuvolosa"])},rain:e=>{const{normalize:n}=e;return n(["pioggia"])},sleet:e=>{const{normalize:n}=e;return n(["nevischio"])},snow:e=>{const{normalize:n}=e;return n(["neve"])},wind:e=>{const{normalize:n}=e;return n(["vento"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["umidità"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatura"])},WIND:e=>{const{normalize:n}=e;return n(["vento"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["senza file .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["con file .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["data workout"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare questo workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["file .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["o file .zip contenente files .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},1901:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},3726:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Over deze instantie"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is zelf-gehoste activiteiten tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Onder ",t(r(0))," licentie "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Broncode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weer gegevens van:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden."])},TEXT:e=>{const{normalize:n}=e;return n(["Gedetailleerde informatie over deze instantie"])}},ACTION:e=>{const{normalize:n}=e;return n(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activeer account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Instellingen"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email voor contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal bestanden in zip archief"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Bij 0, geen limiet op registratie."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal actieve gebruikers"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["geen contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van bestanden voor upload (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van zip archief (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Terug naar beheer"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u de account ",t(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u het wachtwoord voor ",t(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Huidige email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Verwijder gebruiker"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nieuwe email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Geen tekst ingegeven"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het wachtwoord werd gereset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainingen aanwezig"])},IMAGE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Beheer sporten"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["De applicatie configureren."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["gebruiker"]),n(["gebruikers"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["aantal trainingen"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Verwijder admin rechten"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het emailadres werd bijgewerkt."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netwerk fout."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een voltooide export aanvraag."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: een geldige email is vereist."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fout bij het verwerken van het gpx bestand."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fout bij verwerken van gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Bestandsformaat niet toegelaten."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Bestandsgrootte is groter dan toegestaan."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:n}=e;return n(["Geen bestand geselecteerd."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een export aanvraag."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Geef een geldig auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signatuur verlopen. Log opnieuw in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Deze sport bestaat niet."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Succesvol geregistreerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["U hebt geen machtigingen."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["volgende"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["vorige"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Toekennen"])},BACK:e=>{const{normalize:n}=e;return n(["Terug"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Verwijder mijn account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Uitzetten"])},EDIT:e=>{const{normalize:n}=e;return n(["Bewerken"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aanzetten"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},NO:e=>{const{normalize:n}=e;return n(["Nee"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreer"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export aanvragen"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Opslaan"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["over"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bevestiging"])},CONTACT:e=>{const{normalize:n}=e;return n(["contacteer"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["dag"]),n(["dagen"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Weergegeven"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentatie"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Verborgen"])},HOME:e=>{const{normalize:n}=e;return n(["Startscherm"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["oplopend"])},DESC:e=>{const{normalize:n}=e;return n(["aflopend"])},LABEL:e=>{const{normalize:n}=e;return n(["sorteer"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Deze maand"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Nieuwe OAuth2 app toevoegen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheim"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["App omschrijving"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Probleem bij"])},NAME:e=>{const{normalize:n}=e;return n(["Naam van de app"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Omvang"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["geeft toestemming tot aanpassen van de applicatie instellingen."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["App URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 apps"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["De app ",t(r(0))," vraagt:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Toegang geven aan ",t(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Verwijder app"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Voeg een app toe"])},NO_APP:e=>{const{normalize:n}=e;return n(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle bestaande tokens werden ingetrokken."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop "Verwijder mijn account" te klikken in uw instellingen.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account verwijderen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\n\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Aanpassingen aan ons Privacybeleid"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["De volgende informatie wordt verzameld:\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\n- Technische informatie (de browsernaam en naam van het besturingssysteem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welke informatie wordt er door ons verzameld?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\n\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\n\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\n\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen."])},TITLE:e=>{const{normalize:n}=e;return n(["Wordt er informatie met derden gedeeld?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie."])},TITLE:e=>{const{normalize:n}=e;return n(["Hoe beschermen we uw informatie?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden."])},TITLE:e=>{const{normalize:n}=e;return n(["Waarvoor wordt de opgegeven informatie gebruikt?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\n\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\n\nWetgeving kan verschillen als de server zich op een andere plaats bevindt."])},TITLE:e=>{const{normalize:n}=e;return n(["Gebruik door minderjarigen"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Door deze site te gebruiken, gaat u akkoord met ons privacybeleid."])},TITLE:e=>{const{normalize:n}=e;return n(["Uw toestemming"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Laatste aanpassing"])},TITLE:e=>{const{normalize:n}=e;return n(["privacybeleid"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Virtueel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Trektocht"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (Elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergbeklimmen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Roeien"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Sneeuwschoenen"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandelen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistieken"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["maand"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["jaar"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Al een account aangemaakt?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Geef een paswoord in"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data exporteren"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archief downloaden"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["link aanmaken..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Je kan 1 keer per 24h een archief aanvragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fout (gelieve een nieuw archief aan te vragen)"])},in_progress:e=>{const{normalize:n}=e;return n(["Bezig met verwerken..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ik wil mijn account verwijderen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Het privacybeleid werd aangepast, gelieve te ",t(r(0))," voor verdergaan."])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Uitloggen"])},LOG_IN:e=>{const{normalize:n}=e;return n(["inloggen"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Wachtwoord"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Wachtwoord vergeten?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Tenminste 8 karakters vereist."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Wachtwoord reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["gemiddeld"])},GOOD:e=>{const{normalize:n}=e;return n(["goed"])},LABEL:e=>{const{normalize:n}=e;return n(["wachtwoord sterkte"])},STRONG:e=>{const{normalize:n}=e;return n(["sterk"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Gebruik enkele hoofdletters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Voeg meer niet gangbare woorden toe."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermijd jaartallen met een persoonlijke betekenis."])},capitalization:e=>{const{normalize:n}=e;return n(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:n}=e;return n(["Vermijd persoonlijke gegevens en jaartallen."])},l33t:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},noNeed:e=>{const{normalize:n}=e;return n(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])},pwned:e=>{const{normalize:n}=e;return n(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermijd recente jaartallen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermijd opeenvolgende woorden en karakters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},sequences:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare opeenvolgingen."])},useWords:e=>{const{normalize:n}=e;return n(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])}},WEAK:e=>{const{normalize:n}=e;return n(["zwak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Uw wachtwoord werd aangepast. Klik ",t(r(0))," om in te loggen."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account aanpassen"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Hoogte gerelateerde data (opnames, totaal)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Terug naar profiel"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Sport voorkeuren wijzigen"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Gelieve ",t(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Eerste dag van de week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Voornaam"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Achternaam"])},LOCATION:e=>{const{normalize:n}=e;return n(["Locatie"])},MONDAY:e=>{const{normalize:n}=e;return n(["Maandag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Afbeelding aanpassen"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Afbeelding verwijderen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Afbeelding veranderen"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Voorkeuren aanpassen"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Datum registratie"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["actie"])},COLOR:e=>{const{normalize:n}=e;return n(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actief"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["snelheidsgrens voor stilstand"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sport voorkeuren aanpassen"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["afbeelding"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["voorkeuren"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE:e=>{const{normalize:n}=e;return n(["profiel"])},SPORTS:e=>{const{normalize:n}=e;return n(["sporten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Tijdzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperialistisch systeem (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Eenheid voor afstand"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisch systeem (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ik heb het ",t(r(0))," gelezen en goedgekeurd."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registreren is uitgeschakeld."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Opnieuw zenden van account bevestigingsmail"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset uw wachtwoord"])},REVIEW:e=>{const{normalize:n}=e;return n(["beoordeel"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Deze account is niet actief."])},USERNAME:e=>{const{normalize:n}=e;return n(["Gebruikersnaam"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["gebruikersafbeelding"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["U hebt het ",t(r(0))," aanvaard."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["geklommen"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["gemiddelde snelheid"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["gem. snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["Terug naar training"])},DATE:e=>{const{normalize:n}=e;return n(["datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["gedaald"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["toon filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["afstand"])},DURATION:e=>{const{normalize:n}=e;return n(["duur"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training aanpassen"])},ELEVATION:e=>{const{normalize:n}=e;return n(["hoogte"])},END:e=>{const{normalize:n}=e;return n(["einde"])},FROM:e=>{const{normalize:n}=e;return n(["van"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberg filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["De afstand moet groter zijn dan 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["De duur moet langer zijn dan 0 seconden"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. hoogte"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max. grootte"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Volgende training"])},NOTES:e=>{const{normalize:n}=e;return n(["notities"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data vanuit gpx, zonder op te schonen"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen vorige training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Geen records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Geen trainingen."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorige training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Gem. snelheid"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Langste afstand"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Langste duur"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["resterende karakters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segmenten"])])},SPEED:e=>{const{normalize:n}=e;return n(["snelheid"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sporten"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start en aankomst"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titel"])},TO:e=>{const{normalize:n}=e;return n(["aan"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Eén uploaden!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["heldere dag"])},"clear-night":e=>{const{normalize:n}=e;return n(["heldere nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["bewolkt"])},fog:e=>{const{normalize:n}=e;return n(["mist"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:n}=e;return n(["regen"])},sleet:e=>{const{normalize:n}=e;return n(["natte sneeuw"])},snow:e=>{const{normalize:n}=e;return n(["sneeuw"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatuur"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OZO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["Z"])},SE:e=>{const{normalize:n}=e;return n(["ZO"])},SSE:e=>{const{normalize:n}=e;return n(["ZZO"])},SSW:e=>{const{normalize:n}=e;return n(["ZZW"])},SW:e=>{const{normalize:n}=e;return n(["ZW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WZW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["zonder .gpx bestand"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["met .gpx bestand"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["training"]),n(["trainingen"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["datum training"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["of .zip archief met .gpx bestanden"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},136:function(e,n,t){"use strict";var r=t(3148),a=t(7028),o=t(9963),i=t(2343),s=t(5205);(0,s.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=t(6252),c=t(2262),u=t(3577);const d=e=>((0,l.dD)("data-v-97e20d3a"),e=e(),(0,l.Cn)(),e),m={id:"footer"},E={class:"footer-items"},_={class:"footer-item"},S=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},z=["href"],I=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),g={class:"footer-item"};var R=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const n=e,{adminContact:t,version:r}=(0,c.BK)(n);return(e,n)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",E,[(0,l._)("div",_,[S,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(t)}`},(0,u.zw)(e.$t("common.CONTACT")),9,z)])):(0,l.kq)("",!0),I,(0,l._)("div",g,[(0,l.Wm)(a,{to:"/privacy-policy"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])])])}}}),N=t(3744);const U=(0,N.Z)(R,[["__scopeId","data-v-97e20d3a"]]);var h=U,v=(t(7658),t(6595)),C=t(5801),w=t(9917),D=t(6287);const f=e=>((0,l.dD)("data-v-ab6e62ae"),e=e(),(0,l.Cn)(),e),P={id:"nav"},k={class:"nav-container"},L={class:"nav-app-name"},b={class:"nav-items-close"},M=f((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),y={key:0,class:"nav-items-group"},G=f((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),F={class:"nav-items-user-menu"},W={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},B={key:1,class:"nav-items-group"},x=f((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var K=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:n}){const t=(0,w.o)(),r=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,n("menuInteraction",!0)}function d(){i.value=!1,n("menuInteraction",!1)}function m(e){t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){t.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,n)=>{const t=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",k,[(0,l._)("div",L,[(0,l._)("div",{class:"nav-item app-name",onClick:n[0]||(n[0]=n=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":i.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:n[1]||(n[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[M,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:n[2]||(n[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:n[3]||(n[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",y,[(0,l.Wm)(t,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(t,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),G])):(0,l.kq)("",!0)]),(0,l._)("div",F,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",W,[(0,l._)("div",Y,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(t,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:E},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",B,[(0,l.Wm)(t,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(_,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[x])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const H=(0,N.Z)(K,[["__scopeId","data-v-ab6e62ae"]]);var $=H,Z=t(7167);const V={id:"no-config"},q={class:"error-page"},j={class:"error-img"},X=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,n)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",q,[(0,l._)("div",j,[(0,l.Wm)(Z.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,X)])]))}});const J=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var ee=J;const ne=(0,l._)("div",{id:"top"},null,-1),te={key:0,class:"app-container"},re={class:"app-loading"},ae={class:"container scroll"},oe=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[oe];var se=(0,l.aZ)({__name:"App",setup(e){const n=(0,w.o)(),t=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function i(e){a.value=e}function s(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&s(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function E(){let e="en";try{const n=navigator.language.split("-")[0];n in D.v1&&(e=n)}catch(t){e="en"}n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),n.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,n)=>{const s=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)($,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",te,[(0,l._)("div",re,[(0,l.Wm)(s)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(ee,{key:1}))],2)),(0,l._)("div",ae,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(h,{key:2,version:(0,c.SU)(t)?(0,c.SU)(t).version:"",adminContact:(0,c.SU)(t).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const le=se;var ce=le,ue=t(2540),de=t(1020),me=t(2894);const Ee={class:"alert-message"},_e=["innerHTML"];var Se=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Ee,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(t))},null,8,_e)]))}});const Te=(0,N.Z)(Se,[["__scopeId","data-v-69d7e4ff"]]);var pe=Te,Ae=t(2531);const Oe={class:"custom-textarea"},ze=["id","name","maxLength","disabled"],Ie={class:"remaining-chars"};var ge=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:n}){const t=e,r=(0,c.iH)("");function a(e){n("updateValue",e.target.value)}return(0,l.YP)((()=>t.input),(e=>{r.value=null===e?"":e})),(n,t)=>((0,l.wg)(),(0,l.iD)("div",Oe,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLength:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value=e),onInput:a},null,40,ze),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(n.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const Re=(0,N.Z)(ge,[["__scopeId","data-v-eb7fa534"]]);var Ne=Re,Ue=t(3649),he=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const n=e,{digits:t,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(n),m=(0,l.Fl)((()=>d.value?Ue.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,Ue.sC)(a.value,s.value,m.value,t.value):parseFloat(a.value.toFixed(t.value))));return(e,n)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(E)),3),(0,l.Uk)(" "+(0,u.zw)(" ")+" "),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,N.Z)(he,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,we=t(2201);const De={class:"dropdown-wrapper"},fe={key:0,class:"dropdown-list"},Pe=["onClick"];var ke=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:n}){const t=e,r=(0,we.yj)(),a=(0,c.iH)(!1),o=t.options.map((e=>e));function i(){a.value=!a.value}function s(e){n("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(n,t)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(n.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:n.value===e.selected}]),key:t,onClick:e=>s(n)},(0,u.zw)(n.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Le=(0,N.Z)(ke,[["__scopeId","data-v-9590c0e6"]]);var be=Le;const Me={class:"error-message"},ye={key:0},Ge={key:1};var Fe=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Me,[Array.isArray((0,c.SU)(t))?((0,l.wg)(),(0,l.iD)("ul",ye,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(t),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},(0,u.zw)(e.$t(n)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Ge,(0,u.zw)(e.$t((0,c.SU)(t))),1))]))}});const We=(0,N.Z)(Fe,[["__scopeId","data-v-2659a79a"]]);var Ye=We;const Be={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},xe=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ke=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),He=[xe,Ke];function $e(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ze={name:"CyclingSport"};const Ve=(0,N.Z)(Ze,[["render",$e]]);var qe=Ve;const je={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Xe=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Qe=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),Je=[Xe,Qe];function en(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",je,Je)}var nn={name:"CyclingTransport"};const tn=(0,N.Z)(nn,[["render",en]]);var rn=tn;const an={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},on=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),sn=[on];function ln(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",an,sn)}var cn={name:"CyclingVirtual"};const un=(0,N.Z)(cn,[["render",ln]]);var dn=un;const mn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},En=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_n=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),Sn=[En,_n];function Tn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mn,Sn)}var pn={name:"Hiking"};const An=(0,N.Z)(pn,[["render",Tn]]);var On=An;const zn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},In=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),gn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),Rn=[In,gn];function Nn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zn,Rn)}var Un={name:"MountainBiking"};const hn=(0,N.Z)(Un,[["render",Nn]]);var vn=hn;const Cn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},wn=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Dn=[wn];function fn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"MountainBikingElectric"};const kn=(0,N.Z)(Pn,[["render",fn]]);var Ln=kn;const bn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"},Mn=(0,l.uE)(' silhouette of a person doing mountaineering ',2),yn=[Mn];function Gn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bn,yn)}var Fn={name:"Mountaineering"};const Wn=(0,N.Z)(Fn,[["render",Gn]]);var Yn=Wn;const Bn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},xn=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Kn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),Hn=[xn,Kn];function $n(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Bn,Hn)}var Zn={name:"Rowing"};const Vn=(0,N.Z)(Zn,[["render",$n]]);var qn=Vn;const jn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Xn=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Qn=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Jn=[Xn,Qn];function et(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",jn,Jn)}var nt={name:"Running"};const tt=(0,N.Z)(nt,[["render",et]]);var rt=tt;const at={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},ot=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),it=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),st=[ot,it];function lt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",at,st)}var ct={name:"SkiingAlpine"};const ut=(0,N.Z)(ct,[["render",lt]]);var dt=ut;const mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),_t=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),St=[Et,_t];function Tt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"SkiingCrossCountry"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const zt={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},It=(0,l.uE)('silhouette of a person with snowshoes',6),gt=[It];function Rt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zt,gt)}var Nt={name:"Snowshoes"};const Ut=(0,N.Z)(Nt,[["render",Rt]]);var ht=Ut;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},Ct=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),wt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),Dt=[Ct,wt];function ft(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,Dt)}var Pt={name:"Trail"};const kt=(0,N.Z)(Pt,[["render",ft]]);var Lt=kt;const bt={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Mt=(0,l.uE)('silhouette of a walking person',3),yt=[Mt];function Gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bt,yt)}var Ft={name:"Walking"};const Wt=(0,N.Z)(Ft,[["render",Gt]]);var Yt=Wt;const Bt=["title"];var xt=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const n=e,{color:t,sportLabel:r,title:a}=(0,c.BK)(n),o=(0,l.f3)("sportColors");return(e,n)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(t)?(0,c.SU)(t):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rn,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dn,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(On,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ln,{key:5})):(0,l.kq)("",!0),"Mountaineering"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yn,{key:6})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qn,{key:7})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rt,{key:8})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:9})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:10})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ht,{key:11})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:12})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yt,{key:13})):(0,l.kq)("",!0)],12,Bt))}});const Kt=xt;var Ht=Kt;const $t={class:"loader"};function Zt(e,n){return(0,l.wg)(),(0,l.iD)("div",$t)}const Vt={},qt=(0,N.Z)(Vt,[["render",Zt],["__scopeId","data-v-4c9921ee"]]);var jt=qt;const Xt={id:"modal"},Qt={class:"custom-modal"},Jt={key:0,class:"modal-message"},er={key:1,class:"modal-message"},nr={class:"modal-buttons"};var tr=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:n}){const t=e,r=(0,w.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(t),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",Xt,[(0,l._)("div",Qt,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(i)?((0,l.wg)(),(0,l.iD)("div",Jt,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(i)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",er,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(s)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(s)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",nr,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=e=>n("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:t[1]||(t[1]=e=>n("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const rr=(0,N.Z)(tr,[["__scopeId","data-v-5aa8db48"]]);var ar=rr;const or=[{target:pe,name:"AlertMessage"},{target:Ae.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Ye,name:"ErrorMessage"},{target:jt,name:"Loader"},{target:ar,name:"Modal"},{target:Ht,name:"SportImage"}],ir={mounted:(e,n)=>{e.clickOutsideEvent=function(t){e===t.target||e.contains(t.target)||n.value(t)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var sr=t(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const lr=(0,o.ri)(ce).provide("sportColors",sr.Zo).use(ue.Z).use(me.Z).use(de.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",ir);or.forEach((e=>{lr.component(e.name,e.target)})),lr.mount("#app")},1020:function(e,n,t){"use strict";t.d(n,{Z:function(){return hc}});var r=t(2201),a=(t(7658),t(6252)),o=t(3577),i=t(9963),s=t(2262),l=t(9252),c=t(5801),u=t(9917),d=t(8966),m=t(2335);const E=e=>((0,a.dD)("data-v-80b4a9e6"),e=e(),(0,a.Cn)(),e),_={id:"admin-app",class:"admin-card"},S=["onSubmit"],T={for:"admin_contact"},p=["value"],A=["disabled"],O={for:"max_users"},z=["disabled"],I={class:"user-limit-help"},g={class:"info-box"},R=E((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),N={for:"max_single_file_size"},U=["disabled"],h={for:"max_zip_file_size"},v=["disabled"],C={for:"gpx_limit_import"},w=["disabled"],D={class:"about-label",for:"about"},f={class:"textarea-description"},P=["innerHTML"],k={class:"privacy-policy-label",for:"privacy_policy"},L={class:"textarea-description"},b=["innerHTML"],M={key:5,class:"form-buttons"},y={class:"confirm",type:"submit"},G=["onClick"],F={key:6,class:"form-buttons"};var W=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const n=e,{edition:t}=(0,s.BK)(n),E=(0,u.o)(),W=(0,r.tv)(),Y=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:""}),B=(0,a.Fl)((()=>E.getters[c.SY.GETTERS.ERROR_MESSAGES]));function x(e){Object.keys(Y).map((n=>{["max_single_file_size","max_zip_file_size"].includes(n)?Y[n]=(0,d.j)(e[n]):["about","privacy_policy"].includes(n)?Y[n]=null!==e[n]?e[n]:"":Y[n]=e[n]}))}function K(){x(n.appConfig),E.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),W.push("/admin/application")}function H(){const e=Object.assign({},Y);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,E.dispatch(c.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{n.appConfig&&x(n.appConfig)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",_,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,i.iM)(H,["prevent"])},[(0,a._)("label",T,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(t)||Y.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":n[0]||(n[0]=e=>Y.admin_contact=e),disabled:!(0,s.SU)(t)},null,8,A)),[[i.nr,Y.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,p))]),(0,a._)("label",O,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":n[1]||(n[1]=e=>Y.max_users=e),disabled:!(0,s.SU)(t)},null,8,z),[[i.nr,Y.max_users]])]),(0,a._)("div",I,[(0,a._)("span",g,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",N,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":n[2]||(n[2]=e=>Y.max_single_file_size=e),disabled:!(0,s.SU)(t)},null,8,U),[[i.nr,Y.max_single_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":n[3]||(n[3]=e=>Y.max_zip_file_size=e),disabled:!(0,s.SU)(t)},null,8,v),[[i.nr,Y.max_zip_file_size]])]),(0,a._)("label",C,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":n[4]||(n[4]=e=>Y.gpx_limit_import=e),disabled:!(0,s.SU)(t)},null,8,w),[[i.nr,Y.gpx_limit_import]])]),(0,a._)("label",D,(0,o.zw)(e.$t("admin.ABOUT.TEXT"))+": ",1),(0,a._)("span",f,(0,o.zw)(e.$t("admin.ABOUT.DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":n[5]||(n[5]=e=>Y.about=e)},null,512)),[[i.nr,Y.about]]):((0,a.wg)(),(0,a.iD)("div",{key:1,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.about?Y.about:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,P)),(0,a._)("label",k,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE")))+": ",1),(0,a._)("span",L,(0,o.zw)(e.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":n[6]||(n[6]=e=>Y.privacy_policy=e)},null,512)),[[i.nr,Y.privacy_policy]]):((0,a.wg)(),(0,a.iD)("div",{key:3,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.privacy_policy?Y.privacy_policy:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,b)),(0,s.SU)(B)?((0,a.wg)(),(0,a.j4)(r,{key:4,message:(0,s.SU)(B)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t)?((0,a.wg)(),(0,a.iD)("div",M,[(0,a._)("button",y,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,G)])):((0,a.wg)(),(0,a.iD)("div",F,[(0,a._)("button",{class:"confirm",onClick:n[7]||(n[7]=(0,i.iM)((n=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:n[8]||(n[8]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,S)])),_:1})])}}}),Y=t(3744);const B=(0,Y.Z)(W,[["__scopeId","data-v-80b4a9e6"]]);var x=B;const K={class:"stat-card"},H={class:"stat-content box"},$={class:"stat-icon"},Z={class:"stat-details"},V={class:"stat-huge"},q={class:"stat"};var j=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const n=e,{icon:t,text:r,value:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("div",H,[(0,a._)("div",$,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(t)}`])},null,2)]),(0,a._)("div",Z,[(0,a._)("div",V,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",q,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const X=j;var Q=X;const J={id:"user-stats"};var ee=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const n=e,{appStatistics:t}=(0,s.BK)(n),r=(0,a.Fl)((()=>(0,d.Z)(t.value.uploads_dir_size,!1)));return(e,n)=>((0,a.wg)(),(0,a.iD)("div",J,[(0,a.Wm)(Q,{icon:"users",value:(0,s.SU)(t).users,text:e.$t("admin.USER",(0,s.SU)(t).users)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"tags",value:(0,s.SU)(t).sports,text:e.$t("workouts.SPORT",(0,s.SU)(t).sports)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(t).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(t).workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const ne=ee;var te=ne,re=t(2531);const ae=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),oe={id:"admin-menu",class:"center-card"},ie={class:"admin-menu description-list"},se={class:"application-config-details"},le=ae((()=>(0,a._)("br",null,null,-1))),ce={class:"registration-status"},ue={key:0,class:"email-sending-status"},de=ae((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var me=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const n=e,{appConfig:t,appStatistics:r}=(0,s.BK)(n);return(e,n)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",oe,[(0,a.Wm)(re.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(te,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",ie,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",se,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),le,(0,a._)("span",ce,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(t).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(t).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ue,[de,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const Ee=(0,Y.Z)(me,[["__scopeId","data-v-0dd66f89"]]);var _e=Ee,Se=t(9150),Te=t(631);const pe=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),Ae={id:"admin-sports",class:"admin-card"},Oe={class:"responsive-table"},ze=pe((()=>(0,a._)("th",null,"#",-1))),Ie={class:"text-left"},ge={class:"text-left sport-action"},Re=pe((()=>(0,a._)("th",null,null,-1))),Ne={class:"text-center"},Ue=pe((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),he={class:"cell-heading"},ve={class:"sport-label"},Ce={class:"cell-heading"},we={class:"text-center"},De={class:"cell-heading"},fe={class:"sport-action"},Pe={class:"cell-heading"},ke={class:"action-button"},Le=["onClick"],be={key:0,class:"has-workouts"},Me=pe((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ye=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:n}=(0,Se.QT)(),t=(0,u.o)(),r=(0,a.Fl)((()=>(0,Te.xH)(t.getters[c.O8.GETTERS.SPORTS],n))),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(e,n){t.dispatch(c.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:n})}return(e,n)=>{const t=(0,a.up)("SportImage"),c=(0,a.up)("ErrorMessage"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ae,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",Oe,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[ze,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",ge,(0,o.zw)(e.$t("admin.ACTION")),1),Re])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.id},[(0,a._)("td",Ne,[Ue,(0,a.Uk)(" "+(0,o.zw)(n.id),1)]),(0,a._)("td",null,[(0,a._)("span",he,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(t,{title:n.translatedLabel,"sport-label":n.label,color:n.color},null,8,["title","sport-label","color"])]),(0,a._)("td",ve,[(0,a._)("span",Ce,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(n.translatedLabel),1)]),(0,a._)("td",we,[(0,a._)("span",De,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(n.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",fe,[(0,a._)("span",Pe,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ke,[(0,a._)("button",{class:(0,o.C_)({danger:n.is_active}),onClick:e=>d(n.id,!n.is_active)},(0,o.zw)(e.$t(`buttons.${n.is_active?"DIS":"EN"}ABLE`)),11,Le),n.has_workouts?((0,a.wg)(),(0,a.iD)("span",be,[Me,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ge=(0,Y.Z)(ye,[["__scopeId","data-v-6d62af67"]]);var Fe=Ge,We=t(8626),Ye=t(5020),Be=t(6595);const xe={class:"users-filters"},Ke={class:"search-username"},He=["onKeyup","placeholder"];var $e=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:n}){const t=(0,r.yj)(),l=(0,s.iH)(t.query.q?t.query.q:"");function c(){""!==l.value&&n("filterOnUsername",l)}function u(){l.value="",n("filterOnUsername",l.value)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",xe,[(0,a._)("div",Ke,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":n[0]||(n[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,He),[[i.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const Ze=(0,Y.Z)($e,[["__scopeId","data-v-627a8e91"]]);var Ve=Ze,qe=t(2766),je=t(6558);const Xe=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),Qe={id:"admin-users",class:"admin-card"},Je={key:0,class:"no-users"},en={key:1,class:"responsive-table"},nn=Xe((()=>(0,a._)("th",null,"#",-1))),tn={class:"left-text"},rn={class:"left-text"},an={class:"left-text"},on={class:"cell-heading"},sn={class:"cell-heading"},ln={class:"cell-heading"},cn={class:"cell-heading"},un={class:"text-center"},dn={class:"cell-heading"},mn={class:"text-center"},En={class:"cell-heading"},_n={class:"text-center"},Sn={class:"cell-heading"},Tn={class:"text-center"},pn={class:"cell-heading"},An=["disabled","onClick"];var On=(0,a.aZ)({__name:"AdminUsers",setup(e){const n=(0,u.o)(),t=(0,r.yj)(),l=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,qe.pm)(t.query,d,m));const _=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.ERROR_MESSAGES]));function A(e){n.dispatch(c.RT.ACTIONS.GET_USERS,e)}function O(e){I("q",e.value)}function z(e,t){n.dispatch(c.RT.ACTIONS.UPDATE_USER,{username:e,admin:t})}function I(e,n){E[e]=n,"per_page"===e&&(E.page=1),l.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{n.dispatch(c.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>t.query),(e=>{E=(0,qe.pm)(e,d,m,{query:E}),A(E)})),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Qe,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ve,{onFilterOnUsername:O}),(0,a.Wm)(We.Z,{sort:(0,s.SU)(qe.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:I},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",Je,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",en,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[nn,(0,a._)("th",tn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",rn,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",an,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.username},[(0,a._)("td",null,[(0,a._)("span",on,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Be.Z,{user:n},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",sn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(t,{to:`/admin/users/${n.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",ln,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(n.email),1)]),(0,a._)("td",null,[(0,a._)("span",cn,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(je.p6)(n.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",un,[(0,a._)("span",dn,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(n.nb_workouts),1)]),(0,a._)("td",mn,[(0,a._)("span",En,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",_n,[(0,a._)("span",Sn,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",Tn,[(0,a._)("span",pn,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:n.admin}),disabled:n.username===(0,s.SU)(_).username,onClick:e=>z(n.username,!n.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${n.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,An)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Ye.Z,{key:0,path:"/admin/users",pagination:(0,s.SU)(T),query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,s.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const zn=(0,Y.Z)(On,[["__scopeId","data-v-dc12ff78"]]);var In=zn,gn=t(2179);const Rn={class:"profile-tabs custom-checkboxes-group"},Nn={class:"profile-tabs-checkboxes custom-checkboxes"},Un=["id","name","checked","disabled","onInput"];var hn=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const n=e,{tabs:t,selectedTab:r,disabled:i}=(0,s.BK)(n);function l(e){switch(e){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${n.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(n.edition?"/edit":"")}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Rn,[(0,a._)("div",Nn,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(t),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:n},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:n,name:n,checked:(0,s.SU)(r).split("/")[0]===n,disabled:(0,s.SU)(i),onInput:t=>e.$router.push(l(n))},null,40,Un),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${n}`)),1)])])))),128))])]))}});const vn=hn;var Cn=vn;const wn={id:"user-profile"},Dn={class:"box"};var fn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,{user:t,tab:r}=(0,s.BK)(n),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,n)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",wn,[(0,a.Wm)(gn.Z,{user:(0,s.SU)(t)},null,8,["user"]),(0,a._)("div",Dn,[(0,a.Wm)(Cn,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(t)},null,8,["user"])])])}}});const Pn=(0,Y.Z)(fn,[["__scopeId","data-v-9729cba4"]]);var kn=Pn,Ln=t(1585),bn=t(6287);const Mn={id:"user-preferences",class:"description-list"},yn={class:"profile-buttons"};var Gn=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>n.user.language?bn.zK[n.user.language]:bn.zK.en)),l=(0,a.Fl)((()=>n.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>n.user.timezone?n.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>n.user.date_format?n.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>n.user.display_ascent?"DISPLAYED":"HIDDEN"));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`user.PROFILE.${(0,s.SU)(l)}`)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",yn,[(0,a._)("button",{onClick:t[0]||(t[0]=e=>n.$router.push("/profile/edit/preferences"))},(0,o.zw)(n.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:t[1]||(t[1]=e=>n.$router.push("/"))},(0,o.zw)(n.$t("common.HOME")),1)])]))}});const Fn=Gn;var Wn=Fn;const Yn={id:"user-profile-edition",class:"center-card"};var Bn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,t=(0,u.o)(),{user:r,tab:i}=(0,s.BK)(n),l=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","PRIVACY-POLICY"],d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING]));return(e,n)=>{const t=(0,a.up)("router-view"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Yn,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,s.SU)(i)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Cn,{tabs:l,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(t,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const xn=Bn;var Kn=xn,Hn=t(313),$n=t(7069),Zn=t(5167),Vn=t(8403);const qn=e=>((0,a.dD)("data-v-6e11106c"),e=e(),(0,a.Cn)(),e),jn={id:"user-infos-edition"},Xn={class:"profile-form form-box"},Qn={key:1,class:"info-box success-message"},Jn=["onSubmit"],et={class:"form-items",for:"email"},nt=["disabled"],tt={class:"form-items",for:"password-field"},rt={class:"form-items",for:"new-password-field"},at={class:"form-buttons"},ot={class:"confirm",type:"submit"},it=["onClick"],st={class:"data-export"},lt={class:"info-box"},ct=qn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),ut={key:0,class:"data-export-archive"},dt=qn((()=>(0,a._)("i",{class:"fa fa-download","aria-hidden":"true"},null,-1))),mt={key:1},Et={key:2},_t=qn((()=>(0,a._)("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1)));var St=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,s.qj)({email:"",password:"",new_password:""}),m=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.USER_LOADING])),E=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.IS_SUCCESS])),S=(0,s.iH)(!1),T=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,s.iH)(!1),A=(0,s.iH)(!1),O=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.EXPORT_REQUEST])),z=(0,a.Fl)((()=>h())),I=(0,s.iH)(!1);function g(){p.value=!0}function R(e){l.email=e.email}function N(e){l.password=e}function U(e){l.new_password=e}function h(){return O.value?(0,je.p6)(O.value.created_at,t.value.timezone,t.value.date_format,!0,null,!0):null}function v(){return!z.value||(0,Hn.Z)(new Date(z.value),(0,$n.Z)(new Date,1))}function C(){const e={email:l.email,password:l.password};l.new_password&&(e.new_password=l.new_password),S.value=l.email!==t.value.email,r.dispatch(c.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function w(e){A.value=e}function D(e){r.dispatch(c.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}function f(){r.dispatch(c.YN.ACTIONS.REQUEST_DATA_EXPORT)}async function P(e){I.value=!0,await Zn.Z.get(`/auth/account/export/${e}`,{responseType:"blob"}).then((n=>{const t=window.URL.createObjectURL(new Blob([n.data],{type:"application/zip"})),r=document.createElement("a");r.href=t,r.setAttribute("download",e),document.body.appendChild(r),r.click()})).finally((()=>I.value=!1))}return(0,a.bv)((()=>{n.user&&(r.dispatch(c.YN.ACTIONS.GET_REQUEST_DATA_EXPORT),R(n.user))})),(0,a.Ah)((()=>{r.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(N(""),U(""),R(t.value),p.value=!1)})),(0,a.YP)((()=>t.value.email),(async()=>{R(t.value)})),(e,n)=>{const r=(0,a.up)("Modal"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",jn,[A.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:n[0]||(n[0]=e=>D((0,s.SU)(t).username)),onCancelAction:n[1]||(n[1]=e=>w(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Xn,[(0,s.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(T)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Qn,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,s.SU)(E).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:p.value}),onSubmit:(0,i.iM)(C,["prevent"])},[(0,a._)("label",et,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":n[2]||(n[2]=e=>l.email=e),disabled:(0,s.SU)(m),required:!0,onInvalid:g},null,40,nt),[[i.nr,l.email]])]),(0,a._)("label",tt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(Vn.Z,{id:"password-field",disabled:(0,s.SU)(m),password:l.password,required:!0,onUpdatePassword:N,onPasswordError:g},null,8,["disabled","password"])]),(0,a._)("label",rt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(Vn.Z,{id:"new-password-field",disabled:(0,s.SU)(m),checkStrength:!0,password:l.new_password,isSuccess:!1,onUpdatePassword:U,onPasswordError:g},null,8,["disabled","password"])]),(0,a._)("div",at,[(0,a._)("button",ot,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:n[4]||(n[4]=(0,i.iM)((e=>w(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1),v()?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"confirm",onClick:(0,i.iM)(f,["prevent"])},(0,o.zw)(e.$t("buttons.REQUEST_DATA_EXPORT")),9,it)):(0,a.kq)("",!0)])],42,Jn),(0,a._)("div",st,[(0,a._)("span",lt,[ct,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),(0,s.SU)(O)?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+(0,o.zw)((0,s.SU)(z))+"): ",1),"successful"===(0,s.SU)(O).status?((0,a.wg)(),(0,a.iD)("span",{key:0,class:"archive-link",onClick:n[5]||(n[5]=(0,i.iM)((e=>P((0,s.SU)(O).file_name)),["prevent"]))},[dt,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+(0,o.zw)((0,s.SU)(d.Z)((0,s.SU)(O).file_size))+") ",1)])):((0,a.wg)(),(0,a.iD)("span",mt,(0,o.zw)(e.$t(`user.EXPORT_REQUEST.STATUS.${(0,s.SU)(O).status}`)),1)),I.value?((0,a.wg)(),(0,a.iD)("span",Et,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),_t])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])])])}}});const Tt=(0,Y.Z)(St,[["__scopeId","data-v-6e11106c"]]);var pt=Tt,At=t(6761);const Ot={id:"user-infos-edition"},zt={class:"profile-form form-box"},It=["onSubmit"],gt={class:"form-items",for:"registrationDate"},Rt=["value"],Nt={class:"form-items",for:"first_name"},Ut=["disabled"],ht={class:"form-items",for:"last_name"},vt={class:"form-items",for:"birth_date"},Ct=["disabled"],wt={class:"form-items",for:"location"},Dt=["disabled"],ft={class:"form-items"},Pt={class:"form-buttons"},kt={class:"confirm",type:"submit"};var Lt=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),l=(0,a.Fl)((()=>n.user.created_at?(0,je.p6)(n.user.created_at,n.user.timezone,n.user.date_format):"")),d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,At.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function _(e){r.bio=e}function S(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{n.user&&E(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage"),c=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Ot,[(0,a._)("div",zt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(S,["prevent"])},[(0,a._)("label",gt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(l),disabled:""},null,8,Rt)]),(0,a._)("label",Nt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":n[0]||(n[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,Ut),[[i.nr,r.first_name]])]),(0,a._)("label",ht,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":n[1]||(n[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",vt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":n[2]||(n[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,Ct),[[i.nr,r.birth_date]])]),(0,a._)("label",wt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":n[3]||(n[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,Dt),[[i.nr,r.location]])]),(0,a._)("label",ft,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(c,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",Pt,[(0,a._)("button",kt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,It)])])}}});const bt=(0,Y.Z)(Lt,[["__scopeId","data-v-5e5a4552"]]);var Mt=bt;const yt=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),Gt={id:"user-picture-edition"},Ft={class:"user-picture-form"},Wt=["onSubmit"],Yt={class:"picture-help"},Bt={class:"info-box"},xt=yt((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Kt={class:"picture-buttons"},Ht=["disabled"];var $t=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,d.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){t.dispatch(c.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&t.dispatch(c.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[(0,a._)("div",Ft,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",Yt,[(0,a._)("span",Bt,[xt,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Kt,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Ht),(0,s.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:S},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,Wt)])])}}});const Zt=(0,Y.Z)($t,[["__scopeId","data-v-687e9604"]]);var Vt=Zt;const qt=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],jt={id:"tz-dropdown"},Xt=["value","disabled","onKeydown"],Qt=["onClick","onMouseover","autofocus"];var Jt=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:n}){const t=e,{input:r,disabled:l}=(0,s.BK)(t),c=(0,s.iH)(t.input),u=(0,s.iH)(!1),d=(0,s.iH)(null),m=(0,s.iH)(0);function E(e){return e.toLowerCase().match(c.value.toLowerCase())}function _(e){m.value=e}function S(e){c.value=e,u.value=!1,n("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&S(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>t.input),(e=>{c.value=e})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",jt,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[n[0]||(n[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,Xt),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(qt).filter((e=>E(e))),((e,n)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:n===m.value}]),onClick:n=>S(e),onMouseover:e=>_(n),autofocus:n===m.value},(0,o.zw)(e),43,Qt)))),128))],512)):(0,a.kq)("",!0)]))}});const er=(0,Y.Z)(Jt,[["__scopeId","data-v-47ea2903"]]);var nr=er;const tr={id:"user-preferences-edition"},rr={class:"profile-form form-box"},ar=["onSubmit"],or={class:"form-items"},ir=["disabled"],sr=["value"],lr={class:"form-items"},cr={class:"form-items"},ur=["disabled"],dr=["value"],mr={class:"form-items form-checkboxes"},Er={class:"checkboxes-label"},_r={class:"checkboxes"},Sr=["id","name","checked","disabled","onInput"],Tr={class:"checkbox-label"},pr={class:"form-items form-checkboxes"},Ar={class:"checkboxes-label"},Or={class:"checkboxes"},zr=["id","name","checked","disabled","onInput"],Ir={class:"checkbox-label"},gr={class:"form-items form-checkboxes"},Rr={class:"checkboxes-label"},Nr={class:"checkboxes"},Ur=["id","name","checked","disabled","onInput"],hr={class:"checkbox-label"},vr={class:"form-buttons"},Cr={class:"confirm",type:"submit"};var wr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),l=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],E=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,je.d2)((new Date).toUTCString(),n.user.timezone,r.language)));function T(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.date_format=e.date_format?e.date_format:"dd/MM/yyyy",r.weekm=!!e.weekm&&e.weekm}function p(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function z(e){r.imperial_units=e}function I(e){r.weekm=e}return(0,a.bv)((()=>{n.user&&T(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",tr,[(0,a._)("div",rr,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(_)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("label",or,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":n[0]||(n[0]=e=>r.language=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(bn.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,sr)))),128))],8,ir),[[i.bM,r.language]])]),(0,a._)("label",lr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(nr,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",cr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":n[1]||(n[1]=e=>r.date_format=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,dr)))),128))],8,ur),[[i.bM,r.date_format]])]),(0,a._)("div",mr,[(0,a._)("span",Er,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",_r,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(l,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>I(n.value)},null,40,Sr),(0,a._)("span",Tr,(0,o.zw)(e.$t(`user.PROFILE.${n.label}`)),1)]))),64))])]),(0,a._)("div",pr,[(0,a._)("span",Ar,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Or,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>z(n.value)},null,40,zr),(0,a._)("span",Ir,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${n.label}`)),1)]))),64))])]),(0,a._)("div",gr,[(0,a._)("span",Rr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",Nr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(n.value)},null,40,Ur),(0,a._)("span",hr,(0,o.zw)(e.$t(`common.${n.label}`)),1)]))),64))])]),(0,a._)("div",vr,[(0,a._)("button",Cr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=(0,i.iM)((n=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,ar)])])}}});const Dr=(0,Y.Z)(wr,[["__scopeId","data-v-3b8a9a12"]]);var fr=Dr;const Pr={class:"privacy-policy-text"},kr={class:"last-update"},Lr=["innerHTML"],br=["innerHTML"];var Mr=(0,a.aZ)({__name:"PrivacyPolicy",setup(e){const n=(0,u.o)(),t="Sun, 26 Feb 2023 17:00:00 GMT",r=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),i=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.LANGUAGE])),d=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>A())),_=(0,a.Fl)((()=>p())),S=(0,a.Fl)((()=>O())),T=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"];function p(){return d.value.timezone?d.value.timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris"}function A(){return je.KD[i.value]}function O(){return(0,je.p6)(r.value.privacy_policy&&r.value.privacy_policy_date?`${r.value.privacy_policy_date}`:t,_.value,E.value,!1)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Pr,[(0,a._)("h1",null,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE"))),1),(0,a._)("p",kr,(0,o.zw)(e.$t("privacy_policy.LAST_UPDATE"))+": "+(0,o.zw)((0,s.SU)(S)),1),(0,s.SU)(r).privacy_policy?((0,a.wg)(),(0,a.iD)("div",{key:0,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(r).privacy_policy))},null,8,Lr)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},(0,a.Ko)(T,(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("h2",null,(0,o.zw)(e.$t(`privacy_policy.CONTENT.${n}.TITLE`)),1),(0,a._)("p",{innerHTML:(0,s.SU)(l.Z)(e.$t(`privacy_policy.CONTENT.${n}.CONTENT`))},null,8,br)],64)))),64))]))}});const yr=(0,Y.Z)(Mr,[["__scopeId","data-v-0c1693aa"]]);var Gr=yr;const Fr={id:"user-privacy-policy"},Wr={key:1},Yr={class:"policy-content"},Br={for:"accepted_policy",class:"accepted_policy"},xr={class:"form-buttons"},Kr={class:"confirm",type:"submit"};var Hr=(0,a.aZ)({__name:"UserPrivacyPolicyValidation",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),d=(0,s.iH)(!1);function m(){r.dispatch(c.YN.ACTIONS.ACCEPT_PRIVACY_POLICY,d.value)}return(0,a.Ah)((()=>{r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("router-link"),u=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Fr,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t).accepted_privacy_policy?((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",null,[(0,a.Wm)(u,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Wm)(c,{to:"/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})]),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):((0,a.wg)(),(0,a.iD)("form",{key:2,onSubmit:n[3]||(n[3]=(0,i.iM)((e=>m()),["prevent"]))},[(0,a._)("div",Yr,[(0,a.Wm)(Gr)]),(0,a._)("label",Br,[(0,a.wy)((0,a._)("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e)},null,512),[[i.e8,d.value]]),(0,a._)("span",null,[(0,a.Wm)(u,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])]),(0,a.Wm)(c,{to:"/profile/edit/account"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)])),_:1}),(0,a._)("div",xr,[(0,a._)("button",Kr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32))])}}});const $r=(0,Y.Z)(Hr,[["__scopeId","data-v-c77e04be"]]);var Zr=$r;const Vr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],qr=["application:write"],jr={id:"new-oauth2-app"},Xr={id:"new-oauth2-title"},Qr={id:"apps-form"},Jr=["onSubmit"],ea={class:"form-items"},na={class:"form-item"},ta={for:"app-name"},ra={class:"form-item"},aa={for:"app-description"},oa={class:"form-item"},ia={for:"app-url"},sa={class:"form-item"},la={for:"app-redirect-uri"},ca={class:"form-item-scope"},ua={class:"form-item-scope-label"},da={class:"scope-label"},ma=["name","checked","onChange"],Ea=["innerHTML"],_a={class:"form-buttons"},Sa=["disabled"];var Ta=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),l=(0,s.qj)([]),d=(0,a.Fl)((()=>S(n.authUser,qr,Vr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:l.sort().join(" ")};t.dispatch(c.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const n=l.indexOf(e);n>-1?l.splice(n,1):l.push(e)}function S(e,n,t){const r=[...t];return e.admin&&r.push(...n),r.sort()}return(e,n)=>{const t=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",jr,[(0,a._)("h1",Xr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Qr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",ea,[(0,a._)("div",na,[(0,a._)("label",ta,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":n[0]||(n[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",ra,[(0,a._)("label",aa,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(t,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",oa,[(0,a._)("label",ia,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",sa,[(0,a._)("label",la,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":n[2]||(n[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",ca,[(0,a._)("div",ua,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:n},[(0,a._)("label",da,[(0,a._)("input",{type:"checkbox",name:n,checked:l.includes(n),onChange:e=>_(n)},null,40,ma),(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Ea)])))),128))])]),(0,a._)("div",_a,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===l.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Sa),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Jr)])])}}});const pa=(0,Y.Z)(Ta,[["__scopeId","data-v-0657ee77"]]);var Aa=pa;const Oa={id:"authorize-oauth2-app"},za={key:0},Ia={id:"authorize-oauth2-title"},ga={class:"oauth2-access description-list"},Ra={class:"client-scope"},Na=["innerHTML"],Ua={class:"authorize-oauth2-buttons"},ha={key:1},va={class:"no-app"};var Ca=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const n=(0,r.yj)(),t=(0,u.o)(),i=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENT])),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(){n.query.client_id&&"string"===typeof n.query.client_id&&t.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,n.query.client_id)}function m(){t.dispatch(c.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${n.query.client_id}`,redirect_uri:`${n.query.redirect_uri}`,response_type:`${n.query.response_type}`,scope:`${n.query.scope}`,state:`${n.query.state?n.query.state:""}`,code_challenge:`${n.query.code_challenge?n.query.code_challenge:""}`,code_challenge_method:`${n.query.code_challenge_method?n.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Oa,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("h1",Ia,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).name),1)])),_:1},8,["to"])])),_:1})]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",ga,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(i).scope.split(" "),(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("dt",Ra,[(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Na)],64)))),128))]),(0,a._)("div",Ua,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",ha,[(0,a._)("p",va,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const wa=(0,Y.Z)(Ca,[["__scopeId","data-v-3b2fe9ed"]]);var Da=wa;const fa={id:"oauth2-apps"};var Pa=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n);return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(c.Km.MUTATIONS.SET_CLIENTS,[])})),(e,n)=>{const t=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",fa,[(0,a.Wm)(t,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const ka=Pa;var La=ka;const ba={id:"oauth2-app",class:"description-list"},Ma={key:1},ya={key:0,class:"info-box success-message"},Ga=["title"],Fa={key:0},Wa={key:1,class:"app-secret"},Ya=["title"],Ba={class:"client-scopes"},xa={class:"app-buttons"},Ka={key:2},Ha={class:"no-app"};var $a=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,r.yj)(),i=(0,u.o)(),{afterCreation:l,authUser:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.REVOCATION_SUCCESSFUL])),_=(0,s.iH)(!1),S=(0,s.iH)(null),T=(0,s.iH)(!1),p=(0,s.iH)(!1),A=(0,s.iH)(!1);function O(){!l.value&&t.params.id&&"string"===typeof t.params.id&&i.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_ID,+t.params.id)}function z(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",I(!0)}function I(e){_.value=e,e||(S.value=null)}function g(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(c.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(c.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function R(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{i.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(c.Km.MUTATIONS.EMPTY_CLIENT),i.commit(c.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&I(!1)})),(e,n)=>{const t=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",ba,[_.value?((0,a.wg)(),(0,a.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:n[0]||(n[0]=e=>g((0,s.SU)(m).id)),onCancelAction:n[1]||(n[1]=e=>I(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,s.SU)(m)&&(0,s.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",Ma,[(0,s.SU)(l)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ya,(0,o.zw)(e.$t((0,s.SU)(l)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_id)+" ",1),(0,s.SU)(l)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:R},null,10,Ga)):(0,a.kq)("",!0)]),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Fa,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",Wa,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:N},null,10,Ya)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.p6)((0,s.SU)(m).issued_at,(0,s.SU)(d).timezone,(0,s.SU)(d).date_format)),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,s.SU)(m).client_description})},(0,o.zw)((0,s.SU)(m).client_description?(0,s.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).redirect_uris.length>0?(0,s.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",Ba,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",xa,[(0,a._)("button",{class:"danger",onClick:n[2]||(n[2]=e=>z(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:n[3]||(n[3]=e=>z(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:n[4]||(n[4]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",Ka,[(0,a._)("p",Ha,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Za=(0,Y.Z)($a,[["__scopeId","data-v-3a844fa2"]]);var Va=Za;const qa={id:"oauth2-apps-list"},ja={class:"apps-list"},Xa={key:0},Qa={class:"app-issued-at"},Ja={key:1,class:"no-apps"},eo={class:"app-list-buttons"};var no=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),i=(0,r.yj)(),{authUser:l}=(0,s.BK)(n),d=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const n={};return e.page&&(n.page=(0,qe.z_)(e.page,qe.Hf)),n}function S(e){t.dispatch(c.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,n)=>{const t=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",qa,[(0,a._)("p",ja,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",Xa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("li",{key:n.client_id},[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:n.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.name),1)])),_:2},1032,["to"]),(0,a._)("span",Qa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(je.p6)(n.issued_at,(0,s.SU)(l).timezone,(0,s.SU)(l).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ja,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Ye.Z,{key:2,pagination:(0,s.SU)(m),path:"/profile/apps",query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",eo,[(0,a._)("button",{onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const to=(0,Y.Z)(no,[["__scopeId","data-v-efa45ea0"]]);var ro=to;const ao={id:"user-sport-preferences"},oo={key:0,class:"responsive-table"},io={class:"mobile-display"},so={key:0,class:"profile-buttons mobile-display"},lo={key:1,class:"profile-buttons"},co={class:"text-left"},uo={key:0},mo={class:"cell-heading"},Eo=["value"],_o={class:"cell-heading"},So={key:0,class:"disabled-message"},To={key:1,class:"fa fa-refresh fa-spin fa-fw"},po={class:"cell-heading"},Ao={class:"cell-heading"},Oo=["checked"],zo={class:"cell-heading"},Io=["value"],go={key:1},Ro={key:0,class:"action-buttons"},No={class:"cell-heading"},Uo=["onClick"],ho={key:1,class:"edition-buttons"},vo=["disabled"],Co=["disabled","onClick"],wo=["disabled"],Do={key:0,class:"profile-buttons"},fo={key:1,class:"profile-buttons"};var Po=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const n=e,t=(0,u.o)(),{t:r}=(0,Se.QT)(),{isEdition:l,user:d}=(0,s.BK)(n),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>t.getters[c.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,Te.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),A=(0,s.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:E?E[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):N()}function z(e){return A.sport_id===e}function I(e){A.color=e.target.value}function g(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function R(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function U(e){e.preventDefault(),t.dispatch(c.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,n){e.preventDefault(),t.dispatch(c.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,n)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,n)=>{const t=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",ao,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",oo,[(0,a._)("div",io,[(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",so,[(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",lo,[(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[2]||(n[2]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",co,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("th",uo,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(i=>((0,a.wg)(),(0,a.iD)("tr",{key:i.id},[(0,a._)("td",null,[(0,a._)("span",mo,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),z(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:I},null,40,Eo)):((0,a.wg)(),(0,a.j4)(t,{key:1,title:i.translatedLabel,"sport-label":i.label,color:i.color?i.color:(0,s.SU)(E)[i.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!i.is_active}])},[(0,a._)("span",_o,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(i.translatedLabel)+" ",1),i.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",So," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&z(i.id)?((0,a.wg)(),(0,a.iD)("i",To)):(0,a.kq)("",!0),(0,s.SU)(p)&&A.sport_id===i.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",po,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,s.SU)(d).sports_list.includes(i.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",Ao,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:R},null,40,Oo)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(i.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",zo,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:g},null,40,Io)):((0,a.wg)(),(0,a.iD)("span",go,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("td",Ro,[(0,a._)("span",No,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(i)},(0,o.zw)(e.$t("buttons.EDIT")),9,Uo)):(0,a.kq)("",!0),z(i.id)?((0,a.wg)(),(0,a.iD)("div",ho,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:U},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vo),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Co),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:n[3]||(n[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,wo)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",Do,[(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[6]||(n[6]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const ko=(0,Y.Z)(Po,[["__scopeId","data-v-74e52489"]]);var Lo=ko,bo=t(2894);const Mo=e=>((0,a.dD)("data-v-64eb8494"),e=e(),(0,a.Cn)(),e),yo={class:"about-text"},Go=["innerHTML"],Fo=Mo((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Wo={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},Yo=Mo((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),Bo={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},xo=Mo((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),Ko=Mo((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),Ho={key:0},$o=Mo((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),Zo=["href"],Vo={key:1},qo=["href"],jo={class:"about-instance"},Xo=["innerHTML"];var Qo=(0,a.aZ)({__name:"About",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),r=(0,a.Fl)((()=>i()));function i(){const e={};return"darksky"===t.value.weather_provider&&(e["name"]="Dark Sky",e["url"]="https://darksky.net"),"visualcrossing"===t.value.weather_provider&&(e["name"]="Visual Crossing",e["url"]="https://www.visualcrossing.com"),e}return(e,n)=>{const i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",yo,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Go),(0,a._)("p",null,[Fo,(0,a._)("a",Wo,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[Yo,(0,a._)("a",Bo,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[xo,(0,a.Wm)(i,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[Ko])),_:1})]),(0,s.SU)(t).admin_contact?((0,a.wg)(),(0,a.iD)("div",Ho,[$o,(0,a._)("a",{href:`mailto:${(0,s.SU)(t).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,Zo)])):(0,a.kq)("",!0),(0,s.SU)(r)&&(0,s.SU)(r).name?((0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Uk)((0,o.zw)(e.$t("about.WEATHER_DATA_FROM"))+" ",1),(0,a._)("a",{href:(0,s.SU)(r).url,target:"_blank",rel:"nofollow noopener"},(0,o.zw)((0,s.SU)(r).name),9,qo)])):(0,a.kq)("",!0),(0,s.SU)(t).about?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[(0,a._)("p",jo,(0,o.zw)(e.$t("about.ABOUT_THIS_INSTANCE")),1),(0,a._)("div",{innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(t).about))},null,8,Xo)],64)):(0,a.kq)("",!0)])])}}});const Jo=(0,Y.Z)(Qo,[["__scopeId","data-v-64eb8494"]]);var ei=Jo;const ni={id:"bike"},ti=["src"];function ri(e,n){return(0,a.wg)(),(0,a.iD)("div",ni,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,ti)])}const ai={},oi=(0,Y.Z)(ai,[["render",ri],["__scopeId","data-v-795f7f5f"]]);var ii=oi;const si={id:"about",class:"view"},li={class:"container"},ci={class:"container-sub"},ui={class:"container-sub about-details"};var di=(0,a.aZ)({__name:"AboutView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",si,[(0,a._)("div",li,[(0,a._)("div",ci,[(0,a.Wm)(ii)]),(0,a._)("div",ui,[(0,a.Wm)(ei)])])]))}});const mi=(0,Y.Z)(di,[["__scopeId","data-v-bffb50d0"]]);var Ei=mi,_i=t(1818),Si=t(2056);const Ti=e=>((0,a.dD)("data-v-645a9e33"),e=e(),(0,a.Cn)(),e),pi={class:"timeline-workout"},Ai={class:"box"},Oi={class:"workout-user-date"},zi={class:"workout-user"},Ii=["title"],gi={key:0},Ri={key:1,class:"no-map"},Ni={class:"img"},Ui={class:"data"},hi=Ti((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),vi={key:0},Ci={class:"data"},wi=Ti((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Di={key:0,class:"data elevation"},fi=["alt"],Pi={class:"data-values"},ki={key:1,class:"data altitude"},Li=Ti((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),bi={class:"data-values"};var Mi=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const n=e,t=(0,u.o)(),{user:r,workout:i,sport:l,useImperialUnits:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function E(e){return e&&null!==e.ascent&&null!==e.descent}return(e,n)=>{const t=(0,a.up)("router-link"),c=(0,a.up)("SportImage"),u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",pi,[(0,a._)("div",Ai,[(0,a._)("div",Oi,[(0,a._)("div",zi,[(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(t,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,s.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(t,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,s.SU)(i).workout_date&&(0,s.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,s.SU)(je.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(_i.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Ii)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:n[0]||(n[0]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("div",gi,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(Si.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",Ri,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,s.SU)(i)&&!(0,s.SU)(i).with_gpx}]),onClick:n[1]||(n[1]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",Ni,[(0,s.SU)(l).label?((0,a.wg)(),(0,a.j4)(c,{key:0,"sport-label":(0,s.SU)(l).label,color:(0,s.SU)(l).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Ui,[hi,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",vi,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ci,[wi,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).distance,digits:3,unitFrom:"km",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Di,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,fi),(0,a._)("div",Pi,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/ "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:1,distance:(0,s.SU)(i).max_alt,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),E((0,s.SU)(i))?((0,a.wg)(),(0,a.iD)("div",ki,[Li,(0,a._)("div",bi,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/- "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:1,distance:(0,s.SU)(i).descent,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const yi=(0,Y.Z)(Mi,[["__scopeId","data-v-645a9e33"]]);var Gi=yi,Fi=t(5630),Wi=t(3768);const Yi={id:"timeline"},Bi={class:"section-title"},xi={key:0},Ki={key:1},Hi={key:1,class:"more-workouts"};var $i=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:i}=(0,s.BK)(n),l=(0,s.iH)(1),d=5,m=n.user.nb_workouts>=d?d:n.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){t.dispatch(c.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}function T(){l.value+=1,t.dispatch(c.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Yi,[(0,a._)("div",Bi,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,s.SU)(i).nb_workouts>0&&0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",xi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,s.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Gi,{user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ki,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Gi,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((n=>n.id===e.sport_id))[0]:null,user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.j4)(Fi.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Hi,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const Zi=(0,Y.Z)($i,[["__scopeId","data-v-35567bf2"]]);var Vi=Zi,qi=t(1640),ji=t(4559),Xi=t(7349),Qi=t(1743),Ji=t(9160),es=t(1085);const ns=["title"];var ts=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const n=e,{displayHARecord:t,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(n);return(e,n)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:n[0]||(n[0]=n=>e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,s.SU)(o),title:(0,s.SU)(r).title,color:(0,s.SU)(i)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,s.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,s.SU)(r).records.filter((e=>!!(0,s.SU)(t)||"HA"!==e.record_type)).map((n=>` ${e.$t(`workouts.RECORD_${n.record_type}`)}`))},null,8,ns)):(0,a.kq)("",!0)])])}}});const rs=ts;var as=rs;const os={class:"donut-chart"},is={height:"34",width:"34",viewBox:"0 0 34 34"},ss=["stroke","stroke-dashoffset","transform"];var ls=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const n=e,{colors:t,datasets:r}=(0,s.BK)(n);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,n){return n-e*n}function m(e,n){const t=`rotate(${o}, ${i}, ${l})`;return o=360*n+o,t}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",os,[((0,a.wg)(),(0,a.iD)("svg",is,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,n)=>((0,a.wg)(),(0,a.iD)("g",{key:n},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(t)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(n,e[1].percentage)},null,8,ss)])))),128))]))]))}});const cs=ls;var us=cs;const ds={class:"calendar-workouts-chart"},ms={class:"workouts-count"},Es={key:0,class:"workouts-pane"},_s={class:"more-workouts"};var Ss=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const n=e,{colors:t,datasets:r,sports:i,workouts:l}=(0,s.BK)(n),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,n)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",ds,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",ms,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(us,{datasets:(0,s.SU)(r),colors:(0,s.SU)(t)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",Es,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",_s,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(l),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ts=(0,Y.Z)(Ss,[["__scopeId","data-v-52d4310a"]]);var ps=Ts;const As={class:"calendar-workouts"},Os={class:"desktop-display"},zs={key:0,class:"workouts-display"},Is={key:1,class:"donut-display"},gs={class:"mobile-display"},Rs={key:0,class:"donut-display"};var Ns=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const n=e,{displayHARecord:t,workouts:r,sports:o}=(0,s.BK)(n),i=(0,a.Fl)((()=>(0,Wi.BN)(n.workouts))),l=(0,a.Fl)((()=>(0,Te.Yx)(n.sports))),c=6;return(e,n)=>((0,a.wg)(),(0,a.iD)("div",As,[(0,a._)("div",Os,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",zs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,displayHARecord:(0,s.SU)(t),workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Is,[(0,a.Wm)(ps,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",gs,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Rs,[(0,a.Wm)(ps,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Us=Ns;var hs=Us;const vs={class:"calendar-cells"},Cs={class:"calendar-cell-day"};var ws=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const n=e,{currentDay:t,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(n),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const n=[];for(let t=0;t<7;t++)n.push(e),e=(0,Xi.Z)(e,1);E.value.push(n)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,n){return n?n.filter((n=>(0,Qi.Z)((0,je.eB)(n.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>n.currentDay),(()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",vs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:n},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(Ji.Z)(e,(0,s.SU)(t)),"week-end":S(n),today:(0,s.SU)(es.Z)(e)}]),key:n},[(0,a.Wm)(hs,{workouts:T(e,(0,s.SU)(m)),sports:(0,s.SU)(l),displayHARecord:(0,s.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Cs,(0,o.zw)((0,s.SU)(At.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Ds=ws;var fs=Ds;const Ps={class:"calendar-days"};var ks=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const n=e,t=[];for(let r=0;r<7;r++)t.push((0,Xi.Z)(n.startDate,r));return(n,r)=>((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(t,((n,t)=>(0,a._)("div",{class:"calendar-day",key:t},(0,o.zw)((0,s.SU)(At.Z)(n,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Ls=ks;var bs=Ls;const Ms={class:"calendar-header"},ys=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Gs=[ys],Fs={class:"calendar-month"},Ws=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),Ys=[Ws];var Bs=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:n}){const t=e,{day:r,localeOptions:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ms,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:t[0]||(t[0]=e=>n("displayPreviousMonth"))},Gs),(0,a._)("div",Fs,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(At.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:t[1]||(t[1]=e=>n("displayNextMonth"))},Ys)]))}});const xs=Bs;var Ks=xs;const Hs={id:"user-calendar"},$s={class:"calendar-card box"};var Zs=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:o}=(0,s.BK)(n),i="yyyy-MM-dd",l=(0,s.iH)(new Date),d=(0,s.iH)((0,je.yx)(l.value,n.user.weekm)),m=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function _(){d.value=(0,je.yx)(l.value,n.user.weekm);const e={from:(0,At.Z)(d.value.start,i),to:(0,At.Z)(d.value.end,i),page:1,per_page:100,...Wi.eR};t.dispatch(c.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){l.value=(0,qi.Z)(l.value,1),_()}function T(){l.value=(0,ji.Z)(l.value,1),_()}return(0,a.wF)((()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",Hs,[(0,a._)("div",$s,[(0,a.Wm)(Ks,{day:l.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(bs,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(fs,{currentDay:l.value,displayHARecord:(0,s.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,s.SU)(r),"start-date":d.value.start,timezone:(0,s.SU)(o).timezone,workouts:(0,s.SU)(m),weekStartingMonday:(0,s.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const Vs=Zs;var qs=Vs,js=t(3703),Xs=t(4135),Qs=t(436);const Js={class:"user-month-stats"};var el=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const n=e,{sports:t,user:r}=(0,s.BK)(n),i=new Date,l={duration:"week",start:(0,js.Z)(i),end:(0,Xs.Z)(i)},c=n.sports.map((e=>e.id));return(e,n)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Js,[(0,a.Wm)(i,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Qs.Z,{sports:(0,s.SU)(t),user:(0,s.SU)(r),"chart-params":l,"displayed-sport-ids":(0,s.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const nl=(0,Y.Z)(el,[["__scopeId","data-v-1bcddc12"]]);var tl=nl,rl=t(2540),al=t(3649);const{locale:ol}=rl.Z.global,il=(e,n,t,r)=>{const a="km",o=t?al.Dl[a].defaultTarget:a,i="m",s=t?al.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,al.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,al.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,al.sC)(+e.value,i,s,2)} ${s}`;break;case"LD":l=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,je.p6)(e.workout_date,n,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},sl=(e,n)=>{const t=e.label.toLowerCase(),r=n.label.toLowerCase();return t>r?1:t(o=(0,je.mh)(o,ol.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=n.find((e=>e.id===a.sport_id));return i&&i.label&&(void 0===e[i.translatedLabel]&&(e[i.translatedLabel]={label:i.label,color:i.color,records:[]}),e[i.translatedLabel].records.push(il(a,t,r,o))),e}),{})),cl={class:"records-card"},ul={class:"record-type"},dl={class:"record-value"},ml={class:"record-date"};var El=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const n=e,{records:t,sportTranslatedLabel:r}=(0,s.BK)(n),{t:i}=(0,Se.QT)();function l(e){const n=[];return e.map((e=>{n.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),n.sort(sl)}return(e,n)=>{const i=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",cl,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(t).label,color:(0,s.SU)(t).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,s.SU)(t).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",ul,(0,o.zw)(e.label),1),(0,a._)("span",dl,(0,o.zw)(e.value),1),(0,a._)("span",ml,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const _l=(0,Y.Z)(El,[["__scopeId","data-v-8d17c606"]]);var Sl=_l;const Tl=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),pl={class:"user-records-section"},Al={class:"section-title"},Ol=Tl((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),zl={class:"user-records"},Il={key:0,class:"no-records"};var gl=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),r=(0,a.Fl)((()=>ll(n.user.records,(0,Te.xH)(n.sports,t),n.user.timezone,n.user.imperial_units,n.user.display_ascent,n.user.date_format)));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",pl,[(0,a._)("div",Al,[Ol,(0,a.Uk)(" "+(0,o.zw)(n.$t("workouts.RECORD",2)),1)]),(0,a._)("div",zl,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Il,(0,o.zw)(n.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,s.SU)(r)).sort(),(n=>((0,a.wg)(),(0,a.j4)(Sl,{sportTranslatedLabel:n,records:(0,s.SU)(r)[n],key:n,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const Rl=(0,Y.Z)(gl,[["__scopeId","data-v-f0c85cb8"]]);var Nl=Rl;const Ul={id:"user-stats"};var hl=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),{user:r}=(0,s.BK)(n),o=(0,a.Fl)((()=>n.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?al.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?al.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const n=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Ul,[(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"road",value:(0,s.SU)(u),text:"mi"===(0,s.SU)(c)?"miles":(0,s.SU)(c)},null,8,["value","text"]),(0,s.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(Q,{key:0,icon:"location-arrow",value:(0,s.SU)(E),text:"ft"===(0,s.SU)(m)?"feet":(0,s.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(Q,{icon:"clock-o",value:(0,s.SU)(i).days,text:(0,s.SU)(i).duration},null,8,["value","text"]),(0,s.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(Q,{key:1,icon:"tags",value:(0,s.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,s.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const vl=hl;var Cl=vl;const wl={class:"privacy-policy-message"};function Dl(e,n){const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",wl,[(0,a._)("span",null,[(0,a.Wm)(r,{keypath:"user.LAST_PRIVACY_POLICY_TO_VALIDATE"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:"/profile/edit/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.REVIEW")),1)])),_:1})])),_:1})])])}const fl={},Pl=(0,Y.Z)(fl,[["render",Dl],["__scopeId","data-v-05532ad6"]]);var kl=Pl;const Ll=e=>((0,a.dD)("data-v-4056e776"),e=e(),(0,a.Cn)(),e),bl={key:0,id:"dashboard",class:"view"},Ml={class:"container mobile-menu"},yl={class:"box"},Gl=Ll((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Fl=[Gl],Wl=Ll((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Yl=[Wl],Bl=Ll((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),xl=[Bl],Kl=Ll((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Hl=[Kl],$l={key:0,class:"container privacy-policy-message"},Zl={class:"container"},Vl={class:"container dashboard-container"},ql={class:"left-container dashboard-sub-container"},jl={class:"right-container dashboard-sub-container"},Xl=Ll((()=>(0,a._)("div",{id:"bottom"},null,-1))),Ql={key:1,class:"app-loading"};var Jl=(0,a.aZ)({__name:"Dashboard",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>n.getters[c.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function l(e){i.value=e}return(0,a.wF)((()=>n.dispatch(c.YN.ACTIONS.GET_USER_PROFILE))),(e,n)=>{const c=(0,a.up)("Loader");return(0,s.SU)(t).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bl,[(0,a._)("div",Ml,[(0,a._)("div",yl,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:n[0]||(n[0]=e=>l("calendar"))},Fl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:n[1]||(n[1]=e=>l("chart"))},Yl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:n[2]||(n[2]=e=>l("timeline"))},xl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:n[3]||(n[3]=e=>l("records"))},Hl,2)])]),(0,s.SU)(t).accepted_privacy_policy?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$l,[(0,a.Wm)(kl)])),(0,a._)("div",Zl,[(0,a.Wm)(Cl,{user:(0,s.SU)(t)},null,8,["user"])]),(0,a._)("div",Vl,[(0,a._)("div",ql,[(0,a.Wm)(tl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Nl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",jl,[(0,a.Wm)(qs,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Vi,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),Xl])):((0,a.wg)(),(0,a.iD)("div",Ql,[(0,a.Wm)(c)]))}}});const ec=(0,Y.Z)(Jl,[["__scopeId","data-v-4056e776"]]);var nc=ec,tc=t(8273);const rc={class:"not-found view"};var ac=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",rc,[(0,a.Wm)(tc.Z)]))}});const oc=ac;var ic=oc;const sc={id:"privacy-policy",class:"view"},lc={class:"container"},cc=(0,a._)("div",{id:"bottom"},null,-1);var uc=(0,a.aZ)({__name:"PrivacyPolicyView",setup(e){const n=(0,u.o)();return(0,a.wF)((()=>{n.dispatch(c.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",sc,[(0,a._)("div",lc,[(0,a.Wm)(Gr)]),cc]))}});const dc=uc;var mc=dc,Ec=t(776);const _c={id:"loginOrRegister",class:"view"},Sc={class:"container"},Tc={class:"container-sub"},pc={class:"container-sub"};var Ac=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const n=e,{action:t}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",_c,[(0,a._)("div",Sc,[(0,a._)("div",Tc,[(0,a.Wm)(ii)]),(0,a._)("div",pc,[(0,a.Wm)(Ec.Z,{action:(0,s.SU)(t)},null,8,["action"])])])]))}});const Oc=(0,Y.Z)(Ac,[["__scopeId","data-v-58043acb"]]);var zc=Oc;const Ic=e=>{const n=/(\/profile)(\/edit)*(\/*)/,t=e.replace(n,"").toUpperCase();return""===t?"PROFILE":t.toUpperCase()},gc=[{path:"/",name:"Dashboard",component:nc},{path:"/login",name:"Login",component:zc,props:{action:"login"}},{path:"/register",name:"Register",component:zc,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>t.e(845).then(t.bind(t,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>t.e(845).then(t.bind(t,8793))},{path:"/profile",name:"Profile",component:()=>t.e(845).then(t.bind(t,1133)),children:[{path:"",name:"UserProfile",component:kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfos",component:Ln.Z},{path:"preferences",name:"UserPreferences",component:Wn},{path:"sports",name:"UserSportPreferences",component:Lo,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:La,children:[{path:"",name:"UserAppsList",component:ro},{path:":id",name:"UserApp",component:Va},{path:":id/created",name:"CreatedUserApp",component:Va,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Aa},{path:"authorize",name:"AuthorizeUserApp",component:Da}]}]},{path:"edit",name:"UserProfileEdition",component:Kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Mt},{path:"account",name:"UserAccountEdition",component:pt},{path:"picture",name:"UserPictureEdition",component:Vt},{path:"preferences",name:"UserPreferencesEdition",component:fr},{path:"sports",name:"UserSportPreferencesEdition",component:Lo,props:{isEdition:!0}},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Zr}]}]},{path:"/statistics",name:"Statistics",component:()=>t.e(193).then(t.bind(t,7885))},{path:"/users/:username",name:"User",component:()=>t.e(845).then(t.bind(t,9453))},{path:"/workouts",name:"Workouts",component:()=>t.e(401).then(t.bind(t,9628))},{path:"/workouts/:workoutId",name:"Workout",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>t.e(401).then(t.bind(t,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>t.e(401).then(t.bind(t,4189))},{path:"/admin",name:"Administration",component:()=>t.e(328).then(t.bind(t,6e3)),children:[{path:"",name:"AdministrationMenu",component:_e},{path:"application",name:"ApplicationAdministration",component:x},{path:"application/edit",name:"ApplicationAdministrationEdition",component:x,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:Fe},{path:"users/:username",name:"UserFromAdmin",component:()=>t.e(845).then(t.bind(t,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:In}]},{path:"/about",name:"About",component:Ei},{path:"/privacy-policy",name:"PrivacyPolicy",component:mc},{path:"/:pathMatch(.*)*",name:"not-found",component:ic}],Rc=(0,r.p7)({history:(0,r.PO)("/"),routes:gc}),Nc=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Uc=["/email-update","/about","/privacy-policy"];Rc.beforeEach(((e,n,t)=>{bo.Z.dispatch(c.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Uc.includes(e.path))return t();if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]&&Nc.includes(e.path))return t("/");if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]||Nc.includes(e.path))t();else{const n="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};t(n)}})).catch((e=>{console.error(e),t()}))}));var hc=Rc},5801:function(e,n,t){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,z;t.d(n,{YN:function(){return U},Km:function(){return h},SY:function(){return g},O8:function(){return R},gu:function(){return N},RT:function(){return v},aX:function(){return C}}),function(e){e["ACCEPT_PRIVACY_POLICY"]="ACCEPT_PRIVACY_POLICY",e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_REQUEST_DATA_EXPORT"]="GET_REQUEST_DATA_EXPORT",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["REQUEST_DATA_EXPORT"]="REQUEST_DATA_EXPORT",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING",e["EXPORT_REQUEST"]="EXPORT_REQUEST"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING",e["SET_EXPORT_REQUEST"]="SET_EXPORT_REQUEST"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(i||(i={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(s||(s={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_PRIVACY_POLICY"]="GET_APPLICATION_PRIVACY_POLICY",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_PRIVACY_POLICY"]="UPDATE_APPLICATION_PRIVACY_POLICY",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(E||(E={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(_||(_={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(S||(S={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(z||(z={}));var I=t(52);const g={ACTIONS:c,GETTERS:u,MUTATIONS:d},R={ACTIONS:m,GETTERS:E,MUTATIONS:_},N={ACTIONS:S,GETTERS:T,MUTATIONS:p},U={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},v={ACTIONS:A,GETTERS:O,MUTATIONS:z},C={ACTIONS:I.tW,GETTERS:I.JP,MUTATIONS:I.CW}},2894:function(e,n,t){"use strict";t.d(n,{Z:function(){return de}});var r=t(3907),a=(t(7658),t(5167)),o=t(6154),i=t(8566),s=t(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,i.a)(e);return i.j.set(t,n),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=t(1020),d=t(5801);const m=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${n.username}`).then((t=>{204===t.status?n.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},E={[d.RT.ACTIONS.EMPTY_USER](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USER,{})},[d.RT.ACTIONS.EMPTY_USERS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[d.RT.ACTIONS.GET_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${n}`).then((n=>{"success"===n.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0]):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,n.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const t={};void 0!==n.admin&&(t.admin=n.admin),n.resetPassword&&(t.reset_password=n.resetPassword),n.activate&&(t.activate=n.activate),void 0!==n.new_email&&(t.new_email=n.new_email),a.Z.patch(`users/${n.username}`,t).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]),(n.resetPassword||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(n.activate||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0])):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,n){m(e,{username:n.username,fromAdmin:!0})}},_=e=>{localStorage.removeItem("authToken"),e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),u.Z.push("/login")},S={[d.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&_(e)},[d.YN.ACTIONS.CONFIRM_ACCOUNT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:n.token}).then((n=>{if("success"===n.data.status){const t=n.data.auth_token;window.localStorage.setItem("authToken",t),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,t),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:n.token}).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),n.refreshUser&&e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile/edit/account"))),u.Z.push("/profile/edit/account")):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),n.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((n=>{"canceled"!==n.message&&((0,s.S)(e,n),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${n.actionType}`,n.formData).then((t=>{if("success"===t.data.status)if("login"===n.actionType){const r=t.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("string"===typeof n.redirectUrl?n.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((n=>{"success"===n.data.status?_(e):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${n}`).then((n=>{204===n.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",n).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!n.picture)throw new Error("No file part");const t=new FormData;t.append("file",n.picture),a.Z.post("auth/picture",t,{headers:{"content-type":"multipart/form-data"}}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,n){m(e,n)},[d.YN.ACTIONS.DELETE_PICTURE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((n=>{204===n.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",n).then((n=>{"success"===n.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.ACCEPT_PRIVACY_POLICY](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/privacy-policy",{accepted_policy:n}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/export/request").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/account/export").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[d.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[d.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[d.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[d.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[d.YN.GETTERS.USER_LOADING]:e=>e.loading},p={[d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[d.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,n){e.authToken=n},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,n){e.authUserProfile=n},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,n){e.isRegistrationSuccess=n},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,n){e.loading=n},[d.YN.MUTATIONS.SET_EXPORT_REQUEST](e,n){e.exportRequest=n}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null},O={state:A,actions:S,getters:T,mutations:p};var z=O;const I=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(n).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},g={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const t=new FormData;t.set("client_id",n.client_id),t.set("response_type",n.response_type),t.set("scope",n.scope),t.set("confirm","true"),n.state&&t.set("state",n.state),n.code_challenge&&t.set("code_challenge",n.code_challenge),n.code_challenge_method&&t.set("code_challenge_method",n.code_challenge_method),a.Z.post("oauth/authorize",t,{headers:{"Content-Type":"multipart/form-data"}}).then((n=>{200==n.status&&n.data.redirect_url?window.location.href=n.data.redirect_url:(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.CREATE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",n).then((n=>{"created"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client),u.Z.push(`/profile/apps/${n.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.DELETE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${n}`).then((n=>{204===n.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,n){I(e,`oauth/apps/${n}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,n){I(e,`oauth/apps/${n}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${n}/revoke`).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},R={[d.Km.GETTERS.CLIENT]:e=>e.client,[d.Km.GETTERS.CLIENTS]:e=>e.clients,[d.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[d.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},N={[d.Km.MUTATIONS.SET_CLIENT](e,n){e.client=n},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,n){e.clients=n},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,n){e.pagination=n},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,n){e.revocationSuccessful=n}},U={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:U,actions:g,getters:R,mutations:N};var v=h,C=t(2540);const{locale:w}=C.Z.global,D={[d.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[d.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",n).then((n=>{"success"===n.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,n){document.querySelector("html")?.setAttribute("lang",n),e.commit(d.SY.MUTATIONS.UPDATE_LANG,n),w.value=n}},f={[d.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[d.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[d.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[d.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[d.SY.GETTERS.LANGUAGE]:e=>e.language,[d.SY.GETTERS.LOCALE]:e=>e.locale};var P=t(6287);const k={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,n){e.errorMessages=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,n){e.application.config=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,n){e.appLoading=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,n){e.application.config.privacy_policy=n.privacy_policy,e.application.config.privacy_policy_date=n.privacy_policy_date},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,n){e.application.statistics=n},[d.SY.MUTATIONS.UPDATE_LANG](e,n){e.language=n,e.locale=P.v1[n]}};var L=t(5826);const b={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},M={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((n=>{"success"===n.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${n.id}`,{is_active:n.isActive}).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,n){e.sports=n}},F={sports:[]},W={state:F,actions:M,getters:y,mutations:G};var Y=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${n.username}/${n.filterType}`,{params:n.params}).then((n=>{"success"===n.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},x={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},K={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,n){e.statistics=n},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},H={statistics:{}},$={state:H,actions:B,getters:x,mutations:K};var Z=$;const V={[d.RT.GETTERS.USER]:e=>e.user,[d.RT.GETTERS.USERS]:e=>e.users,[d.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[d.RT.GETTERS.USERS_LOADING]:e=>e.loading,[d.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},q={[d.RT.MUTATIONS.UPDATE_USER](e,n){e.user=n},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,n){e.users=e.users.map((e=>e.username===n.username?n:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,n){e.users=n},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,n){e.loading=n},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,n){e.pagination=n},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var Q=X,J=t(52);const ee=(e,n,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.aX.MUTATIONS[t],n.data.data.workouts),t===J.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},ne={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,n){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,n,J.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,n){ee(e,n,J.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const t=n.segmentId?`/segment/${n.segmentId}`:"";a.Z.get(`workouts/${n.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(n.segmentId&&(0===o.segments.length||!o.segments[+n.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(d.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${n.workoutId}/chart_data${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,n.data.data.chart_data)})),a.Z.get(`workouts/${n.workoutId}/gpx${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,n.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((n=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${n.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${n.workoutId}`,n.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:n.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:n.workoutId}})}))})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!n.file)throw new Error("No file part");const t=n.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",n.file),r.append("data",`{"sport_id": ${n.sport_id}, "notes": "${t}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(1===n.data.data.workouts.length?`/workouts/${t.id}`:"/")}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",n).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(`/workouts/${t.id}`)}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},te={[d.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[d.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[d.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[d.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[d.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},re={[d.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=e.timeline_workouts.concat(n)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,n){e.calendar_workouts=n},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=n},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,n){e.user_workouts=n},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,n){e.pagination=n},[d.aX.MUTATIONS.SET_WORKOUT](e,n){e.workoutData.workout=n},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,n){e.workoutData.chartData=n},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,n){e.workoutData.gpx=n},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,n){e.workoutData.loading=n},[d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},ae={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},oe={state:ae,actions:ne,getters:te,mutations:re};var ie=oe;const se={authUserModule:z,oAuthModule:v,sportsModule:Y,statsModule:Z,usersModule:Q,workoutsModule:ie},le={state:b,actions:D,getters:f,mutations:k,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,n,t){"use strict";var r,a,o;t.d(n,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,n,t){"use strict";t.d(n,{o:function(){return a}});var r=t(3907);function a(){return(0,r.oR)()}},2766:function(e,n,t){"use strict";t.d(n,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return i}});const r=["asc","desc"],a=1,o=10,i=(e,n)=>e&&"string"===typeof e&&+e>0?+e:n,s=(e,n,t)=>e&&"string"===typeof e&&n.includes(e)?e:t,l=(e,n,t,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=i(e.page,a),d.per_page=i(e.per_page,o),d.order=s(e.order,r,u),d.order_by=s(e.order_by,n,t),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,n=1)=>Array.from({length:e-n+1},((e,t)=>n+t)),d=(e,n)=>{if(e<0)return[];if(e<9)return u(e);let t=[1,2];return n<4?t=t.concat([3,4,5]):n<6?t=t.concat(u(n+2,3)):(t=t.concat(["..."]),n=e-2&&t[t.length-1]{switch(e){case"week":return(0,r.Z)(n,{weekStartsOn:t?1:0});case"year":return(0,a.Z)(n);case"month":return(0,o.Z)(n);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,n)=>{switch(e){case"week":return(0,i.Z)(n,7);case"year":return(0,s.Z)(n,1);case"month":return(0,l.Z)(n,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,n)=>(0,m.Z)(new Date(e),n),O=(e,n)=>{const t=(0,o.Z)(e),a=(0,c.Z)(e),i=n?1:0;return{start:(0,r.Z)(t,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},z=(e,n=null,t=null)=>(n||(n="yyyy/MM/dd"),n=R(n,S.value),t||(t="HH:mm"),{workout_date:(0,d.Z)(e,n,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,t)}),I=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],g={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",it:"d MMM yyyy",nl:"d MMM yyyy"},R=(e,n)=>"date_string"===e?g[n]:e,N=(e,n,t,r=!0,a=null,o=!1)=>{a||(a=S.value);const i=r?o?" HH:mm:ss":" HH:mm":"";return(0,d.Z)(A(e,n),`${R(t,a)}${i}`,{locale:_.v1[a]})},U=(e,n,t=null)=>{const r=t||S.value,a=[];return I.map((t=>{const o=R(t,r);a.push({label:`${o} - ${N(e,n,o,!1,r)}`,value:t})})),a}},8966:function(e,n,t){"use strict";t.d(n,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,n=!0)=>{const t=Math.floor(Math.log(e)/Math.log(1024));if(!e)return n?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,t)).toFixed(1),o=r[t];return n?`${a}${o}`:{size:a,suffix:o}},o=e=>{const n=e/1048576;return+n.toFixed(2)}},2024:function(e,n,t){"use strict";t.d(n,{S:function(){return o},k:function(){return a}});var r=t(5801);const a=()=>"/api/",o=(e,n,t="UNKNOWN")=>{if(n&&"canceled"===n.message)return;const a=n?.response&&n.response.data?n.response.data:null;if(401===n?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=n?n.response?413===n.response.status?"file size is greater than the allowed size":a?.message?a.message:t:n.message?n.message:t:t;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${o}`)}},2335:function(e,n,t){"use strict";t.d(n,{O:function(){return i}});var r=t(9597),a=t(1036),o=t.n(a);const i=e=>o()((0,r.Z)(e,{target:"_blank"}),{allowedTags:["a"],disallowedTagsMode:"escape"})},6287:function(e,n,t){"use strict";t.d(n,{mT:function(){return m},v1:function(){return c},zK:function(){return u}});var r=t(879),a=t(5826),o=t(5830),i=t(8160),s=t(4638),l=t(2540);const c={de:r.Z,en:a.Z,fr:o.Z,it:i.Z,nl:s.Z},u={de:"Deutsch",en:"English",fr:"Français",it:"Italiano",nl:"Nederlands"},{availableLocales:d}=l.Z.global,m=d.map((e=>({label:u[e],value:e})))},631:function(e,n,t){"use strict";t.d(n,{CM:function(){return l},PA:function(){return s},Yx:function(){return a},Zo:function(){return r},xH:function(){return i}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Mountaineering:"#48b3b7",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const n={};return e.map((e=>n[e.id]=e.color?e.color:r[e.label])),n},o=(e,n)=>{const t=e.translatedLabel.toLowerCase(),r=n.translatedLabel.toLowerCase();return t>r?1:te.filter((e=>"all"===t||(r.includes(e.id)||e[t]))).map((e=>({...e,translatedLabel:n(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.label))[0],l=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,n,t){"use strict";t.d(n,{FN:function(){return D},aZ:function(){return w},v1:function(){return C}});t(7658);var r=t(6761),a=t(8148),o=t(9319),i=t(584),s=t(4559),l=t(3703),c=t(876),u=t(7090),d=t(4135),m=t(1593),E=t(7982),_=t(3500),S=t(1640),T=t(2540),p=t(6558),A=t(6287),O=t(631),z=t(3649);const{locale:I}=T.Z.global,g={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},R=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],N=(e,n)=>{const t=[];for(let r=(0,p.Nh)(e.duration,e.start,n);r<=e.end;r=(0,p.xA)(e.duration,r))t.push(r);return t},U=(e,n,t=!1)=>{const r={label:e,backgroundColor:[n],data:[]};return t&&(r.type="line",r.borderColor=[n],r.spanGaps=!0),r},h=e=>{const n={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const t=e.color?e.color:O.Zo[e.label];n.average_speed.push(U(e.label,t,!0)),n.nb_workouts.push(U(e.label,t)),n.total_distance.push(U(e.label,t)),n.total_duration.push(U(e.label,t)),n.total_ascent.push(U(e.label,t)),n.total_descent.push(U(e.label,t))})),n},v=(e,n,t)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,z.f3)(["average_speed","total_distance"].includes(e)?"km":"m",n,t);default:case"nb_workouts":case"total_duration":return n}},C=(e,n,t,a,o,i,s)=>{const l=N(e,n),c=g[e.duration],u=t.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((n=>{const t=(0,r.Z)(n,c.api),a=(0,r.Z)(n,"week"===e.duration?(0,p.mh)(s,I.value):c.chart,{locale:A.v1[I.value]});d.push(a),R.map((e=>{m[e].map((n=>{n.data.push(t in o&&E[n.label]in o[t]?v(e,o[t][E[n.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},w=(e,n,t)=>{const r=t?1:0,m="year"===n?(0,a.Z)((0,o.Z)(e,9)):"week"===n?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===n?(0,c.Z)(e):"week"===n?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:n,end:E,start:m}},D=(e,n,t)=>{const{duration:r,start:T,end:p}=e,A=t?1:0;return{duration:r,end:"year"===r?(0,c.Z)(n?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(n?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(n?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(n?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(n?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(n?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,n,t){"use strict";t.d(n,{Dl:function(){return r},Y2:function(){return l},f3:function(){return i},sC:function(){return o},x$:function(){return s}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,n,t,o=3)=>{const i=r[n],s=r[t],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,n,t)=>{const a=t?r[e].defaultTarget:e;return t?o(n,e,a,2):n},s=(e,n)=>{const t=n?1.8*e+32:e,r=n?" °F":"°C";return`${0===t?0:Number(t).toFixed(1)}${r}`},l=(e,n)=>{const t=n?2.2369363*e:e,r=n?" mph":"m/s";return`${0===t?0:Number(t).toFixed(1)}${r}`}},3768:function(e,n,t){"use strict";t.d(n,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});t(7658);var r=t(3649);const a=(e,n,t)=>{const a={speed:{label:n("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:n("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],i=[],s=[];return e.map((e=>{o.push(e.distance),i.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,t)),a.elevation.data.push((0,r.f3)("m",e.elevation,t)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const n=e.length;if(0===n)return{};const t={};return e.map((e=>{t[e.sport_id]||(t[e.sport_id]={count:0,percentage:0}),t[e.sport_id].count+=1,t[e.sport_id].percentage=t[e.sport_id].count/n})),t},i={order:"desc",order_by:"workout_date"}},2531:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,n){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",i,[(0,r.WI)(e.$slots,"content")])])}var l=t(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262);const i={class:"table-selects"},s=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var E=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:n}){const t=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(t),p=[10,25,50,100];function A(e){n("updateSelect",e.target.id,e.target.value)}return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(_).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${n.toUpperCase()}`)),9,l)))),128))],40,s)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(_).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(S),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${n.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(_).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),i=[o];function s(e,n,t,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=t(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,n,t){"use strict";t.d(n,{Z:function(){return _}});var r=t(6252),a=t(2262),o=(t(7658),t(3577));const i={id:"error"},s={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const n=e,{buttonText:t,title:l,message:c,path:u}=(0,a.BK)(n);return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",s,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:n[0]||(n[0]=n=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(t)),1)):(0,r.kq)("",!0)])]))}}),c=t(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const n=e,{target:t}=(0,a.BK)(n),o=(0,a.iH)(),i=(0,a.iH)(!1);function s(){o.value=setTimeout((()=>{i.value=!0}),500)}return(0,r.bv)((()=>s())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,n)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(t)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262),i=t(2766);const s=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=s((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=s((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var E=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const n=e,{pagination:t,path:s,query:E}=(0,o.BK)(n);function _(e,n){const t=Object.assign({},E.value);return t.page=n?e+n:e,t}return(e,n)=>{const E=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(t).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,-1)},disabled:!(0,o.SU)(t).has_prev},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(i.lM)((0,o.SU)(t).pages,(0,o.SU)(t).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(t).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(E,{key:1,class:"page-link",to:{path:(0,o.SU)(s),query:_(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(t).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,1)},disabled:!(0,o.SU)(t).has_next},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,n,t){"use strict";t.d(n,{Z:function(){return D}});var r=t(6252),a=t(2262),o=t(9963),i=t(3577),s=t(1423),l=t(5801),c=t(9917);const u=async e=>{switch(e){case"fr":return await t.e(222).then(t.bind(t,6947));case"de":return await t.e(940).then(t.bind(t,8056));case"it":return await t.e(802).then(t.bind(t,3140));default:return await t.e(261).then(t.bind(t,8288))}},d=async e=>{const n=await t.e(881).then(t.bind(t,410)),r=await u(e),a={graphs:n.default.adjacencyGraphs,dictionary:{...n.default.dictionary,...r.default.dictionary}};s.Mu.setOptions(a)},m=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},E={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},T={class:"password-strength-value"},p={key:0,class:"info-box"},A={class:"password-feedback"};var O=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const n=e,{password:t}=(0,a.BK)(n),o=(0,c.o)(),u=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),z=(0,a.iH)(0),I=(0,a.iH)(""),g=(0,a.iH)([]),R=(0,a.iH)("0% 100%");function N(e){const n=(0,s.tu)(e);z.value=n.score,I.value=m(z.value),g.value=n.feedback.suggestions,R.value=100*z.value/4+"% 100%"}return(0,r.wF)((async()=>await d(u.value))),(0,r.YP)((()=>u.value),(async e=>{await d(e)})),(0,r.YP)((()=>t.value),(async e=>{O.value?I.value="":N(e)})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",E,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${z.value}`]),style:(0,i.j5)({backgroundSize:R.value}),type:"range",value:z.value,min:"0",max:"4",step:"1"},null,14,_),I.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",T,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${I.value}`)),1),g.value.length>0?((0,r.wg)(),(0,r.iD)("div",p,[(0,r._)("ul",A,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(g.value,(n=>((0,r.wg)(),(0,r.iD)("li",{key:n},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${n}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),z=t(3744);const I=(0,z.Z)(O,[["__scopeId","data-v-74e71df5"]]);var g=I;const R=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),N={class:"password-input"},U=["id","disabled","placeholder","required","type"],h={key:0,class:"form-info"},v=R((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var C=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:n}){const t=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(t),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){n("updatePassword",e.target.value)}function p(){n("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",N,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:E.value?"text":"password","onUpdate:modelValue":n[0]||(n[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,U),[[o.YZ,_.value]]),(0,r._)("div",{class:"show-password",onClick:S},[(0,r.Uk)((0,i.zw)(e.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,i.C_)(["fa","fa-eye"+(E.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(s)?((0,r.wg)(),(0,r.iD)("div",h,[v,(0,r.Uk)(" "+(0,i.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(s)?((0,r.wg)(),(0,r.j4)(g,{key:1,password:_.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const w=(0,z.Z)(C,[["__scopeId","data-v-5a126514"]]);var D=w},2056:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577),o=t(2262),i=t(2024);const s=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const n=e,{displayHover:t}=(0,o.BK)(n),l=`${(0,i.k)()}workouts/map/${n.workout.map}`;return(e,n)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(t)}])},[(0,o.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),s],2))}});const c=l;var u=c},436:function(e,n,t){"use strict";t.d(n,{Z:function(){return y}});var r=t(6252),a=t(3577);const o={class:"start-chart"},i={key:0},s={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},E=["checked"],_={key:1},S=["checked"],T={key:2},p=["checked"];function A(e,n,t,A,O,z){const I=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",i,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:n[0]||(n[0]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:n[1]||(n[1]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:n[2]||(n[2]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:n[3]||(n[3]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",_,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:n[4]||(n[4]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,S),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:n[5]||(n[5]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(I,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=t(6761),z=t(2262);const I={class:"chart"};function g(e,n,t,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var R=t(6518),N=t(9150);const U=(e,n=!1)=>{let t="0";n&&(t=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return n?`${"0"===t?"":`${t}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=t(3649);const v=(e,n,t,r=!0,a="km")=>{const o=t?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${n.toFixed(2)} ${o}/h`;case"total_duration":return U(n,r);case"total_distance":case"total_ascent":case"total_descent":return`${n.toFixed(2)} ${o}`;default:return n.toString()}};var C=(0,r.aZ)({name:"Chart",components:{BarChart:R.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:n}=(0,N.QT)();function t(e){return isNaN(e)?0:+e}function a(e,n){return t(e)+t(n)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const i=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),s=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(n){return v(e.displayedData,+n,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(n){n.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(n){return"average_speed"===e.displayedData&&n.dataset.backgroundColor?n.dataset.backgroundColor[0]:"#666666"},rotation:function(n){return e.fullStats&&n.chart.chartArea.width<580?310:0},display:function(n){return!(e.fullStats&&n.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(n,t){if("average_speed"===e.displayedData)return v(e.displayedData,n,e.useImperialUnits,!1);{const n=t.chart.data.datasets.map((e=>e.data[t.dataIndex])).reduce(((e,n)=>a(e,n)),0);return t.datasetIndex===e.displayedSportIds.length-1&&n>0?v(e.displayedData,n,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(t){let r=n(`sports.${t.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==t.parsed.y&&(r+=v(e.displayedData,t.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(t){if("average_speed"===e.displayedData)return"";let r=0;return t.map((e=>{r+=e.parsed.y})),`${n("common.TOTAL")}: `+v(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,R.xZ)({chartData:i,options:s});return{barChartProps:l}}}),w=t(3744);const D=(0,w.Z)(C,[["render",g]]);var f=D,P=t(5801),k=t(9917),L=t(9318),b=(0,r.aZ)({name:"UserMonthStats",components:{Chart:f},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const n=(0,k.o)(),t=(0,z.iH)("total_distance"),a=(0,r.Fl)((()=>n.getters[P.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units,e.user.date_format)));function i(t){n.dispatch(P.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:t})}function s(e){t.value=e.target.name}function l(e,n){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(n.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async n=>{i(l(n,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[t.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:t,updateDisplayData:s}}});const M=(0,w.Z)(b,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=M},2179:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var r=t(6252),a=t(2262),o=t(3577),i=t(6595),s=t(5801),l=t(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},E={class:"user-stat"},_={class:"stat-number"},S={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},z={class:"stat-label"};var I=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const n=e,{user:t}=(0,a.BK)(n),I=(0,l.o)(),g=(0,r.Fl)((()=>I.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,n)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(t)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(t).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(t).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(t).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(t).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(g).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(g).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(t).nb_sports),1),(0,r._)("span",z,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(t).nb_sports)),1)])])])])}}}),g=t(3744);const R=(0,g.Z)(I,[["__scopeId","data-v-20291951"]]);var N=R},1585:function(e,n,t){"use strict";t.d(n,{Z:function(){return C}});t(7658);var r=t(6252),a=t(2262),o=t(3577),i=t(9963),s=t(6761),l=t(5801),c=t(9917),u=t(6558),d=t(6287);const m={id:"user-infos",class:"description-list"},E={key:1,class:"info-box success-message"},_={key:4,class:"email-form form-box"},S={class:"form-items",for:"email"},T={class:"form-items",for:"email"},p={class:"form-buttons"},A={class:"confirm",type:"submit"},O=["onClick"],z={key:5},I={class:"user-bio"},g={key:0,class:"profile-buttons"},R=["onClick"],N={key:1,class:"profile-buttons"};var U=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,c.o)(),{user:U,fromAdmin:h}=(0,a.BK)(n),v=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.LANGUAGE])),C=(0,r.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),w=(0,r.Fl)((()=>n.user.created_at?(0,u.p6)(n.user.created_at,C.value.timezone,C.value.date_format):"")),D=(0,r.Fl)((()=>n.user.birth_date?(0,s.Z)(new Date(n.user.birth_date),`${(0,u.mh)(C.value.date_format,v.value)}`,{locale:d.v1[v.value]}):"")),f=(0,r.Fl)((()=>t.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),P=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),b=(0,a.iH)(!1),M=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){t.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function Y(e){G.value="password-reset",t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function x(){$(),y.value=U.value.email_to_confirm?U.value.email_to_confirm:"",M.value=!0,G.value="email-update"}function K(){y.value="",M.value=!1}function H(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function $(){t.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>$())),(0,r.YP)((()=>f.value),(e=>{e&&(F(""),K())})),(e,n)=>{const t=(0,r.up)("Modal"),s=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",m,[L.value?((0,r.wg)(),(0,r.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===L.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(U).username,onConfirmAction:n[0]||(n[0]=e=>"delete"===L.value?W((0,a.SU)(U).username):Y((0,a.SU)(U).username)),onCancelAction:n[1]||(n[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((0,r.wg)(),(0,r.iD)("div",E,(0,o.zw)(e.$t(`admin.${"password-reset"===G.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(s,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(P)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(P)},null,8,["message"])):(0,r.kq)("",!0),M.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:b.value}),onSubmit:n[4]||(n[4]=(0,i.iM)((e=>H((0,a.SU)(U).username)),["prevent"]))},[(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":n[2]||(n[2]=e=>(0,a.SU)(U).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(U).email]])]),(0,r._)("label",T,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":n[3]||(n[3]=e=>y.value=e)},null,512),[[i.nr,y.value]])]),(0,r._)("div",p,[(0,r._)("button",A,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(w)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(D)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",I,(0,o.zw)((0,a.SU)(U).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",g,[(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:n[5]||(n[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:n[6]||(n[6]=(0,i.iM)((e=>B((0,a.SU)(U).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,R)):(0,r.kq)("",!0),(0,a.SU)(C).username!==(0,a.SU)(U).username&&(0,a.SU)(k).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:n[7]||(n[7]=(0,i.iM)((e=>F("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:n[8]||(n[8]=n=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("button",{onClick:n[9]||(n[9]=n=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:n[10]||(n[10]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=t(3744);const v=(0,h.Z)(U,[["__scopeId","data-v-217519af"]]);var C=v},776:function(e,n,t){"use strict";t.d(n,{Z:function(){return P}});var r=t(6252),a=t(3577),o=t(2262),i=t(9963),s=t(2201),l=t(8403),c=t(5801),u=t(9917);const d=e=>((0,r.dD)("data-v-4f112f24"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},E={key:2,class:"info-box success-message"},_={class:"form-items"},S=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},z=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={key:5,for:"accepted_policy",class:"accepted_policy"},g=["disabled"],R=["disabled"],N={key:3},U={key:0},h={key:4},v={class:"account"},C={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const n=e,t=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(n),D=(0,o.qj)({username:"",email:"",password:"",accepted_policy:!1}),f=(0,r.Fl)((()=>W(n.action))),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),L=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),b=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),M=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),y=(0,r.Fl)((()=>"register"===n.action&&!b.value.is_registration_enabled)),G=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(n.action)&&!b.value.is_email_sending_enabled)),F=(0,o.iH)(!1);function W(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${n.action.toUpperCase()}`}}function Y(){F.value=!0}function B(e){D.password=e}function x(e){switch(e){case"reset":return n.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:D.password,token:n.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:D.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:D.email});default:D["language"]=M.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:D,redirectUrl:t.query.from})}}function K(){D.username="",D.email="",D.password="",D.accepted_policy=!1}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>t.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),F.value=!1,K()})),(e,n)=>{const t=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("i18n-t"),u=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(y)}])},[(0,o.SU)(y)?((0,r.wg)(),(0,r.j4)(t,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(G)?((0,r.wg)(),(0,r.j4)(t,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(L)||(0,o.SU)(k)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(k)?"REGISTRATION"+((0,o.SU)(b).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:F.value}),onSubmit:n[3]||(n[3]=(0,i.iM)((e=>x((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",_,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(y),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:Y,"onUpdate:modelValue":n[0]||(n[0]=e=>D.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,D.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(y)||(0,o.SU)(G),required:"",onInvalid:Y,type:"email","onUpdate:modelValue":n[1]||(n[1]=e=>D.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,D.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[z,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(y),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:D.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:B,onPasswordError:Y},null,8,["disabled","placeholder","password","checkStrength"])),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("label",I,[(0,r.wy)((0,r._)("input",{type:"checkbox",id:"accepted_policy",disabled:(0,o.SU)(y),required:"",onInvalid:Y,"onUpdate:modelValue":n[2]||(n[2]=e=>D.accepted_policy=e)},null,40,g),[[i.e8,D.accepted_policy]]),(0,r._)("span",null,[(0,r.Wm)(c,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,r.w5)((()=>[(0,r.Wm)(s,{to:"/privacy-policy",target:"_blank"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})])])):(0,r.kq)("",!0)]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(y)||(0,o.SU)(G)},(0,a.zw)(e.$t((0,o.SU)(f))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(0,r.Wm)(s,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(s,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",h,[(0,r._)("span",v,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(s,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",C,[(0,r.Wm)(s,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(P)?((0,r.wg)(),(0,r.j4)(u,{key:6,message:(0,o.SU)(P)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),D=t(3744);const f=(0,D.Z)(w,[["__scopeId","data-v-4f112f24"]]);var P=f},6595:function(e,n,t){"use strict";t.d(n,{Z:function(){return E}});var r=t(6252),a=t(2262),o=t(2024);const i={class:"user-picture"},s=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const n=e,t=(0,r.Fl)((()=>n.user.picture?`${(0,o.k)()}users/${n.user.username}/picture?${Date.now()}`:""));return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(t)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577);const o={class:"no-workouts box"};function i(e,n){const t=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(t,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=t(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,n,t){var r={"./de/de.ts":3010,"./en/en.ts":2709,"./fr/fr.ts":5479,"./it/it.ts":6013,"./nb/nb.ts":1901,"./nl/nl.ts":3726};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612},2868:function(){},4777:function(){},9830:function(){},209:function(){},7414:function(){}},n={};function t(r){var a=n[r];if(void 0!==a)return a.exports;var o=n[r]={exports:{}};return e[r].call(o.exports,o,o.exports,t),o.exports}t.m=e,function(){var e=[];t.O=function(n,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(t.O).every((function(e){return t.O[e](r[l])}))?r.splice(l--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){var e,n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};t.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);t.r(o);var i={};e=e||[null,n({}),n([]),n(n)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},t.d(o,i),o}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"static/js/"+({24:"reset",193:"statistics",222:"password.fr",261:"password.en",328:"admin",401:"workouts",802:"password.it",845:"profile",881:"password",940:"password.de"}[e]||e)+"."+{24:"685c3c25",93:"37abd50d",193:"f4227d0e",222:"1d179591",243:"d72fe9e5",261:"b4ea7085",328:"3f508723",401:"a06ab85f",431:"386df171",633:"23ee7aff",802:"be465eec",845:"9d91816f",858:"922b6a43",881:"c0f2f8e4",940:"b81f881f"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"c2966dd5",845:"9f83730d"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="fittrackee_client:";t.l=function(r,a,o,i){if(e[r])e[r].push(a);else{var s,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled' && error.response) {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nconst disabledLanguages = ['nb'] // to update after translations release\n\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (\n matched &&\n matched.length > 1 &&\n !disabledLanguages.includes(matched[1])\n ) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über diese Instanz\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellcode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wetterdaten von:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detaillierte Instanz-Informationen\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein Text eingegeben\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum vollständigen Export existiert bereits.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum Datenexport existiert bereits.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Anzahl der Dateien im Archiv überschreitet die Begrenzung.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten-Export anfragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine neue OAuth2-Anwendung hinzufügen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ID\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheimnis\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsbeschreibung\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erstellt am\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsname\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiterleitungs-URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geltungsbereich\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf auth-Endpunkte\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf users-Endpunkte\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf users-Endpunkte\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf workouts-Endpunkte\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf workouts-Endpunkte\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist sicher, dass du diese App löschen willst?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Anwendung \", _interpolate(_list(0)), \" fragt an:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" den Zugriff auf deinen Account erlauben?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Zwischenablage kopieren\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung löschen\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung hinzufügen\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung wurde nicht gefunden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Anwendungen\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Beschreibung\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Tokens zurückrufen\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du alle Tokens zurückrufen möchtest?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle vorhandenen und vergebenen Tokens wurde zurückgerufen.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account löschen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\\n\\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Änderungen unserer Datenschutzrichtlinie\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden gesammelt:\\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\\n- Technische Informationen (Browser und Betriebssystem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welche Informationen sammeln wir?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\\n\\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\\n\\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\\n\\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geben wir Informationen an Außenstehende weiter?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wie schützen wir deinen Informationen?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Für was verwenden wir deine Informationen?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\\n\\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\\n\\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seitennutzung durch Kinder\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deine Zustimmung\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letztes Update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Virtuell)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergsteigen\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenexport\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archiv herunterladen\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generiere Link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst alle 24 Stunden ein Archiv anfragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fehlgeschlagen (bitte frage einen anderen Export an)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Arbeit...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ich möchte meinen Account löschen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Datenschutzrichtlinie wurde aktualisiert, bitte \", _interpolate(_list(0)), \" sie vor dem Fortfahren.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datumsanzeigeformat\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ich habe die \", _interpolate(_list(0)), \" gelesen und stimme ihr zu.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"überprüfen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Du hast die \", _interpolate(_list(0)), \" akzeptiert.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Distanz muss größer als 0 sein\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Dauer muss größer als 0 Sekunden sein\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About this instance\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weather data from:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any additional information that may be useful to your users. Markdown syntax can be used.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed instance information\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No text entered\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least one file in zip archive exceeds size limit, please check the archive.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A completed export request already exists.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when saving workout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when saving workout.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A data export request already exists.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The number of files in the archive exceeds the limit.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request data export\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request the deletion of your account at any time by going to this address (after logging in) and clicking on \\\"Delete My Account\\\" button in your account edition.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account deletion\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If we decide to change our privacy policy, we will post those changes on this page.\\n\\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changes to our Privacy Policy\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information are collected:\\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\\n- Technical information (browser name and operating system).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What information do we collect?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\\n\\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \\n\\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\\n\\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do we disclose any information to outside parties?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"How do we protect your information?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\\n- The email address you provide may be used to send you information or confirm your account modifications.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What do we use your information for?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\\n\\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\\n\\nLaw requirements can be different if this server is in another jurisdiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Site usage by children\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"By using our site, you consent to our web site privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your Consent\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Virtual)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountaineering\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generating link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request an archive by 24 hours\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"errored (please request another export)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in progres...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I want to delete my account\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The privacy policy has been updated, please \", _interpolate(_list(0)), \" it before proceeding.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date display format\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy policy\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"I have read and agree to the \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"review\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"You have accepted the \", _interpolate(_list(0)), \".\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Both elevation values must be provided and be greater than or equal to 0.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The distance must be greater than 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The duration must be greater than 0 seconds\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A propos de cette instance\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source des données météo :\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information détaillée de l'instance\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de texte saisi\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export terminée existe déjà.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when saving workout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'enregistrement de la séance.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export de données est en cours\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le nombre de fichiers de l'archive dépasse la limite.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Demander un export de données\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous \\\"Supprimer mon compte\\\" dans l'espace de mise à jour de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Suppression du compte\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\\n\\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifications de notre politique de confidentialité\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les informations suivantes sont collectées :\\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\\n- Données techniques (nom du navigateur et du système d'exploitation).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quelles sont les informations que nous recueillons ?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\\n\\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\\n\\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\\n\\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Divulguons-nous des informations à des tiers ?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment protégeons-nous vos informations ?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment utilisons-nous vos informations ?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\\n\\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\\n\\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Protection des mineurs\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En utilisant notre site, vous acceptez la politique de confidentialité de notre site web.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre consentement\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dernière mise à jour\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Virtuel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinisme\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export des données\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Télécharger l'archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lien en cours de génération...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander un export par 24h\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en erreur (veuillez demander une nouvelle archive)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en cours...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je souhaite supprimer mon compte\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La politique de confidentialité a été mise à jour. Veuillez l'\", _interpolate(_list(0)), \" avant de poursuivre.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Format d'affichage de la date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politique de confidentialité\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"J'ai lu et accepte la \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"accepter\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Vous avez accepté la \", _interpolate(_list(0)), \".\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distance doit être supérieure à 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durée doit être supérieure à 0 secondes\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contatta l'amministratore\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee è un tracker self-hosted per attività outdoor.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sotto licenza \", _interpolate(_list(0)), \" \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Codice sorgente\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Azione\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi/rimuovi permessi, elimina account utente.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email di contatto dell'amministratore\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di files zip\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se settato a 0, non ci sono limiti per le registrazioni.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di utenti attivi\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna mail di contatto\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dei file caricabili (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurazione applicazione\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dell'archivio zip (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna ad amministrazione\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler eliminare \", _interpolate(_list(0)), \" account? Tutti i dati verranno persi, quest'azione non può essere annullata.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler resettare \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email corrente\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina utente\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'invio di email è disabilitato.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva/Disattiva sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La password è stata reimpostata.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento disabilitata.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento abilitata.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout esistono\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Immagine\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etichetta\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione sport\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna configurazione applicazione.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utente\"]), _normalize([\"utenti\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato admin\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data di registrazione\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato account\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nome utente\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"numero di workout\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi permessi di amministratore\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi permessi di amministratore\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'indirizzo email è stato aggiornato.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore di rete.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amminstratore.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: dev'essere inserita un'email valida.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura del file gpx.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'elaborazione del file gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura della configurazione.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'aggiornamento della configurazione\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, per favore riprova o contatta l'amministratore.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, la registrazione è disabilitata.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File con estensione non permessa.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dimensione del file è maggiore di quella massima permessa.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Credenziali errate.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I dati inseriti non sono validi.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nuova email dev'essere diversa dalla vecchia mail\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: la password inserita e la conferma non combaciano.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insersci un token di autenticazione valido.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto. Per favore ripeti il log in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, quell'username è già esistente.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo sport non esiste.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrato con successo.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il numero di files nell'archivio supera il limite massimo permesso.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utente non esiste.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dev'essere inserita un'email valida\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai i permessi necessari.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avanti\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"precedente\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorizza\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Indietro\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annulla\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta filtri\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina il mio account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disattiva\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invia\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conferma\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contatto\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"giorno\"]), _normalize([\"giorni\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mostrato\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentazione\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"qui\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nascosto\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più basso al più alto\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più alto al più basso\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina per\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totale\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo mese\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina non trovata\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout non trovato\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Qualcosa è andato storto\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amministratore.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi una nuova applicazione OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Descrizione applicazione\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome applicazione\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL redirect\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura alla configurazioen dell'applicazione.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a usersendpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL applicazione\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazioni OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare quest'app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'applicazione \", _interpolate(_list(0)), \" sta chiedendo:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autorizzi \", _interpolate(_list(0)), \" ad utilizzare il tuo account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copia nella clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina applicazione\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi applicazione\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione non trovata!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna applicazione\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna descrizione\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi tutti i tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler rimuovere tutti i token?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutti i token esistenti associati sono stati rimossi.\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Trasporto)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cicliscmo (Virtuale)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Escursioni\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Elettrica)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinismo\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Canottaggio\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Corsa\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Alpino)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Racchette da neve\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sentieri\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Camminata\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiche\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mese\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"settimana\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"anno\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai ricevuto istruzioni?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hai già un account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password corrente\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci un indirizzo email valido.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci una password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra per username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token invalido, per favore richiedi un nuovo reset della password.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun utente trovato.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password dimenticata?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci almeno 8 caratteri.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"media\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"buona\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sicurezza password\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci qualche maiuscola.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi più parole che sono meno comuni.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci maiuscole oltre alla prima lettera.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sostituzioni prevedibili, per esempio, \", \"@\", \" per la a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa patterns più lunghi e cambia direzione di scrittura più volte.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"È consigliabile cambiare questa password se è utilizzata per altro.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date recenti.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di ripetere lettere e parole.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di scrivere parole al contrario.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sequenze di caratteri comuni.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa più parole, ma evita frasi comuni.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bassa\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La tua password è stata aggiornata. Clicca \", _interpolate(_list(0)), \" per effettuare il login.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tipo di account\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dati relativi alle salite (singoli, totale)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna al profilo\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di nascita\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Formato data\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica profilo\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze sport\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Per favore \", _interpolate(_list(0)), \" per cambiare di nuovo la tua mail o contatta l'amministratore\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primo giorno della settimana\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cognome\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posizione\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lunedì\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi foto\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna foto\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di registrazione\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"azione\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"colore\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disattivato dall'amministratore\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"attivo\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"etichetta\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limite minimo di velocità\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze sport\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato creato con successo.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un link per attivare il tuo account è stato inviato all'indirizzo specificato.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domenica\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferenze\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profilo\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema imperiale (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unità per la distanza\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema metrico (m, km, m/s, °C)\"])}\n }\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, la registrazione è disabilitata.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma dell'account\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo account è inattivo.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo \\\"_\\\".\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto profilo\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi un workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analisi\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"salita\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità media\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vel. media\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ritorna al workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"discesa\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra filtri\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distanza\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica il workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevazione\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fine\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi filtri\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distanza dev'essere maggiore di 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durata dev'essere maggiore di 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ultimi workout\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica più workout\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine massima\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file massimi\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dimensione massima\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità massima\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine minima\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prossimo workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"note\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data dal file gpx, senza \\\"pulizia\\\"\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna cartella all'interno\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna mappa\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout successivo\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna nota\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento precedente\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout precedente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun record.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pause\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segmento precedente\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout precedente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. media\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distanza più lunga\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salita più alta\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durata più lunga\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. massima\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"caratteri rimanenti\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segmento\"]), _normalize([\"segmenti\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inizio\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inizio e fine\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partenza asse elevazione a 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titolo\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica file!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cielo chiaro\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte chiara\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuvoloso\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nebbia\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"parzialmente nuvoloso\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte parzialmente nuvolosa\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pioggia\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nevischio\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neve\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"umidità\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatura\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"senza file .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"con file .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data workout\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare questo workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"o file .zip contenente files .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Over deze instantie\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacteer uw administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is zelf-gehoste activiteiten tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weer gegevens van:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gedetailleerde informatie over deze instantie\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actie\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activeer account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email voor contact\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie configureren\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van zip archief (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u de account \", _interpolate(_list(0)), \" wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u het wachtwoord voor \", _interpolate(_list(0)), \" wilt resetten?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidige email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emails verzenden is uitgeschakeld.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aan- of uitzetten van sporten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen tekst ingegeven\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel uitgeschakeld.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel ingeschakeld.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset wachtwoord\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"gebruiker\"]), _normalize([\"gebruikers\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie datum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersnaam\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aantal trainingen\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin rechten toevoegen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder admin rechten\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een voltooide export aanvraag.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij ophalen van configuratie.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het updaten van de configuratie\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, probeer opnieuw of contacteer de administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, registratie is uitgeschakeld.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsformaat niet toegelaten.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige inloggegevens.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingegeven data is ongeldig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het nieuwe email adres dient te verschillen van het oude\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand geselecteerd.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een export aanvraag.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord: het wachtwoord en de bevestiging komen niet overeen.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig auth token.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, deze gebruikersnaam is al in gebruik.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze sport bestaat niet.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het aantal bestanden in het zip archief overschrijdt de limiet.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruiker bestaat niet.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een geldige email is vereist voor admin contact informatie\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U hebt geen machtigingen.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Herzend bevestigings email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toekennen\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuleren\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder mijn account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bewerken\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanzetten\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export aanvragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opslaan\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contacteer\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"dag\"]), _normalize([\"dagen\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer op\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totaal\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze maand\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina niet gevonden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training niet gevonden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er ging iets mis\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Doorverwijs URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Omvang\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze app wilt verwijderen?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"De app \", _interpolate(_list(0)), \" vraagt:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Toegang geven aan \", _interpolate(_list(0)), \" tot uw gebruikersaccount?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kopieer naar klembord\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder app\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg een app toe\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App niet gevonden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen apps\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen beschrijving\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder alle tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u alle tokens wilt intrekken?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle bestaande tokens werden ingetrokken.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop \\\"Verwijder mijn account\\\" te klikken in uw instellingen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account verwijderen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\\n\\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassingen aan ons Privacybeleid\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De volgende informatie wordt verzameld:\\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\\n- Technische informatie (de browsernaam en naam van het besturingssysteem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welke informatie wordt er door ons verzameld?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\\n\\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\\n\\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\\n\\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordt er informatie met derden gedeeld?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoe beschermen we uw informatie?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waarvoor wordt de opgegeven informatie gebruikt?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\\n\\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\\n\\nWetgeving kan verschillen als de server zich op een andere plaats bevindt.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik door minderjarigen\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Door deze site te gebruiken, gaat u akkoord met ons privacybeleid.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw toestemming\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste aanpassing\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacybeleid\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Virtueel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (Elektrisch)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergbeklimmen\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roeien\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lopen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sneeuwschoenen\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jaar\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen instructies ontvangen?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Al een account aangemaakt?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidig wachtwoord\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig email adres op.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een paswoord in\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data exporteren\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archief downloaden\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"link aanmaken...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je kan 1 keer per 24h een archief aanvragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fout (gelieve een nieuw archief aan te vragen)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bezig met verwerken...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter op gebruikersnaam\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg wachtwoord\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldig token, vraag een nieuwe wachtwoord reset aan.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ik wil mijn account verwijderen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Het privacybeleid werd aangepast, gelieve te \", _interpolate(_list(0)), \" voor verdergaan.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuw wachtwoord\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen gebruikers gevonden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik niet enkel voor de eerste letter een hoofdletter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd persoonlijke gegevens en jaartallen.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Uw wachtwoord werd aangepast. Klik \", _interpolate(_list(0)), \" om in te loggen.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar profiel\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geboortedatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergaveformaat datum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren wijzigen\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren wijzigen\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Gelieve \", _interpolate(_list(0)), \" om uw email adres opnieuw te wijzigen of contacteer uw administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Achternaam\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Locatie\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maandag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding aanpassen\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum registratie\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actie\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"uitgeschakeld door admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actief\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheidsgrens voor stilstand\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol aangemaakt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zondag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afbeelding\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voorkeuren\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ik heb het \", _interpolate(_list(0)), \" gelezen en goedgekeurd.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registreren is uitgeschakeld.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"beoordeel\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon wachtwoord\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze account is niet actief.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \\\"_\\\" zijn toegestaan.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"U hebt het \", _interpolate(_list(0)), \" aanvaard.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. snelheid\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedaald\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afstand\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duur\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training aanpassen\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hoogte\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"einde\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"van\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx bestand\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg filters\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste trainingen\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toon meer trainingen\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. hoogte\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. aantal bestanden\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. grootte\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. snelheid\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. hoogte\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Volgende training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen map aanwezig\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen kaart\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgende training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen notities\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorig segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorige training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauzes\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorig segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorige training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogst geklommen\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste duur\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. snelheid\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"resterende karakters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segmenten\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheid\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sporten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zet hoogte-as vast op 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aan\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"totale duur\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eén uploaden!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere dag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bewolkt\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mist\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte dag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"natte sneeuw\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sneeuw\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vochtigheid\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatuur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze training wilt verwijderen?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip bestand\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"of .zip archief met .gpx bestanden\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-97e20d3a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n };\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=97e20d3a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-97e20d3a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ab6e62ae\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=ab6e62ae&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ab6e62ae\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb7fa534\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLength\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null };\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLength: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=eb7fa534&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eb7fa534\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment } from \"vue\"\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean };\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _createTextVNode(\" \" + _toDisplayString(' ') + \" \"),\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9590c0e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n };\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=9590c0e6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9590c0e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingVirtual.vue?vue&type=template&id=ec8f7bb6\"\nimport script from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Mountaineering.vue?vue&type=template&id=15731a2a\"\nimport script from \"./Mountaineering.vue?vue&type=script&lang=js\"\nexport * from \"./Mountaineering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import CyclingVirtual from '@/components/Common/Images/SportImage/CyclingVirtual.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Mountaineering from '@/components/Common/Images/SportImage/Mountaineering.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string };\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Virtual)')\n ? (_openBlock(), _createBlock(CyclingVirtual, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountaineering')\n ? (_openBlock(), _createBlock(Mountaineering, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 12 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 13 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5aa8db48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null };\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=5aa8db48&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5aa8db48\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-80b4a9e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n class: \"about-label\",\n for: \"about\"\n}\nconst _hoisted_18 = { class: \"textarea-description\" }\nconst _hoisted_19 = [\"innerHTML\"]\nconst _hoisted_20 = {\n class: \"privacy-policy-label\",\n for: \"privacy_policy\"\n}\nconst _hoisted_21 = { class: \"textarea-description\" }\nconst _hoisted_22 = [\"innerHTML\"]\nconst _hoisted_23 = {\n key: 5,\n class: \"form-buttons\"\n}\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = {\n key: 6,\n class: \"form-buttons\"\n}\n\nimport snarkdown from 'snarkdown'\n import {\n ComputedRef,\n capitalize,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean };\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n about: '',\n privacy_policy: '',\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : ['about', 'privacy_policy'].includes(key)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ? appData[key] = appConfig[key]!== null\n ? appConfig[key]\n : ''\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n : (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('admin.ABOUT.TEXT')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('admin.ABOUT.DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 0,\n id: \"about\",\n name: \"about\",\n rows: \"10\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((appData.about) = $event))\n }, null, 512)), [\n [_vModelText, appData.about]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.about ? appData.about : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_19)),\n _createElementVNode(\"label\", _hoisted_20, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('admin.PRIVACY_POLICY_DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 2,\n id: \"privacy_policy\",\n name: \"privacy_policy\",\n rows: \"20\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((appData.privacy_policy) = $event))\n }, null, 512)), [\n [_vModelText, appData.privacy_policy]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.privacy_policy ? appData.privacy_policy : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_22)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 4,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=80b4a9e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-80b4a9e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n };\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n };\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics };\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dc12ff78\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n user.created_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=dc12ff78&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dc12ff78\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean };\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n case 'PRIVACY-POLICY':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=205359d6&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed, ComputedRef } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateFormat } from '@/utils/dates'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const appLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const userLanguage = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const date_format = computed(() =>\n props.user.date_format ? props.user.date_format : 'MM/dd/yyyy'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(userLanguage)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(getDateFormat)(_unref(date_format), _unref(appLanguage))), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS', 'PRIVACY-POLICY']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6e11106c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"data-export\" }\nconst _hoisted_13 = { class: \"info-box\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = {\n key: 0,\n class: \"data-export-archive\"\n}\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-spinner fa-pulse\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { isBefore, subDays } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import authApi from \"@/api/authApi\";\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import {IAuthUserProfile, IUserAccountPayload, IExportRequest} from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n const exportRequest: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]\n )\n const exportRequestDate: ComputedRef = computed(\n () => getExportRequestDate()\n )\n const generatingLink: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT)\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IAuthUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function getExportRequestDate() {\n return exportRequest.value ? formatDate(\n exportRequest.value.created_at,\n user.value.timezone,\n user.value.date_format,\n true,\n null, true\n ) : null\n }\n\n function canRequestExport() {\n return exportRequestDate.value\n ? isBefore(new Date(exportRequestDate.value), subDays(new Date(), 1))\n : true\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n function requestExport() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT)\n }\n async function downloadArchive(filename: string) {\n generatingLink.value = true\n await authApi\n .get(`/auth/account/export/${filename}`, {\n responseType: 'blob',\n })\n .then((response) => {\n const archiveFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/zip' })\n )\n const archive_link = document.createElement('a')\n archive_link.href = archiveFileUrl\n archive_link.setAttribute('download', filename)\n document.body.appendChild(archive_link)\n archive_link.click()\n })\n .finally(() => generatingLink.value = false)\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1),\n (canRequestExport())\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _withModifiers(requestExport, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.REQUEST_DATA_EXPORT')), 9, _hoisted_11))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY')), 1)\n ]),\n (_unref(exportRequest))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EXPORT_REQUEST.DATA_EXPORT')) + \" (\" + _toDisplayString(_unref(exportRequestDate)) + \"): \", 1),\n (_unref(exportRequest).status=== 'successful')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"archive-link\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (downloadArchive(_unref(exportRequest).file_name)), [\"prevent\"]))\n }, [\n _hoisted_16,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE\")) + \" (\" + _toDisplayString(_unref(getReadableFileSize)(_unref(exportRequest).file_size)) + \") \", 1)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.STATUS.${_unref(exportRequest).status}`)), 1)),\n (generatingLink.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.GENERATING_LINK`)) + \" \", 1),\n _hoisted_19\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=6e11106c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6e11106c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e5a4552\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n props.user.timezone,\n props.user.date_format\n )\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=5e5a4552&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e5a4552\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean };\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b8a9a12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_12 = { class: \"checkboxes-label\" }\nconst _hoisted_13 = { class: \"checkboxes\" }\nconst _hoisted_14 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_15 = { class: \"checkbox-label\" }\nconst _hoisted_16 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_17 = { class: \"checkboxes-label\" }\nconst _hoisted_18 = { class: \"checkboxes\" }\nconst _hoisted_19 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_20 = { class: \"checkbox-label\" }\nconst _hoisted_21 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_22 = { class: \"checkboxes-label\" }\nconst _hoisted_23 = { class: \"checkboxes\" }\nconst _hoisted_24 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_25 = { class: \"checkbox-label\" }\nconst _hoisted_26 = { class: \"form-buttons\" }\nconst _hoisted_27 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableDateFormatOptions } from '@/utils/dates'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n date_format: 'dd/MM/yyyy',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const dateFormatOptions = computed(() =>\n availableDateFormatOptions(\n new Date().toUTCString(),\n props.user.timezone,\n userForm.language\n )\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.date_format = user.date_format ? user.date_format : 'dd/MM/yyyy'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"date_format\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.date_format) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dateFormatOptions), (dateFormat) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: dateFormat.value,\n key: dateFormat.value\n }, _toDisplayString(dateFormat.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, userForm.date_format]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_14),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_18, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_19),\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_23, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_24),\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", _hoisted_27, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=3b8a9a12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b8a9a12\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c1693aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"privacy-policy-text\" }\nconst _hoisted_2 = { class: \"last-update\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, capitalize, computed } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { dateStringFormats, formatDate } from '@/utils/dates'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicy',\n setup(__props) {\n\n const store = useStore()\n const fittrackee_private_policy_date = 'Sun, 26 Feb 2023 17:00:00 GMT'\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const dateFormat = computed(() => getDateFormat())\n const timezone = computed(() => getTimezone())\n const private_policy_date = computed(() => getPolicyDate())\n const paragraphs = [\n 'DATA_COLLECTED', 'INFORMATION_USAGE', 'INFORMATION_PROTECTION',\n 'INFORMATION_DISCLOSURE', 'SITE_USAGE_BY_CHILDREN', 'YOUR_CONSENT',\n 'ACCOUNT_DELETION', 'CHANGES_TO_OUR_PRIVACY_POLICY'\n ]\n\n function getTimezone() {\n return authUser.value.timezone\n ? authUser.value.timezone\n : Intl.DateTimeFormat().resolvedOptions().timeZone\n ? Intl.DateTimeFormat().resolvedOptions().timeZone\n : 'Europe/Paris'\n }\n function getDateFormat() {\n return dateStringFormats[language.value]\n }\n function getPolicyDate() {\n return formatDate(\n appConfig.value.privacy_policy && appConfig.value.privacy_policy_date\n ? `${appConfig.value.privacy_policy_date}`\n : fittrackee_private_policy_date,\n timezone.value,\n dateFormat.value,\n false,\n )\n }\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", null, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('privacy_policy.LAST_UPDATE')) + \": \" + _toDisplayString(_unref(private_policy_date)), 1),\n (_unref(appConfig).privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).privacy_policy))\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, _renderList(paragraphs, (paragraph) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: paragraph }, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.TITLE`)), 1),\n _createElementVNode(\"p\", {\n innerHTML: _unref(snarkdown)(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.CONTENT`))\n }, null, 8, _hoisted_4)\n ], 64))\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PrivacyPolicy.vue?vue&type=style&index=0&id=0c1693aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0c1693aa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77e04be\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-privacy-policy\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = { class: \"policy-content\" }\nconst _hoisted_4 = {\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_5 = { class: \"form-buttons\" }\nconst _hoisted_6 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, ref, onUnmounted, toRefs } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import {AUTH_USER_STORE, ROOT_STORE} from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPrivacyPolicyValidation',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const acceptedPolicy= ref(false)\n\n function onSubmit() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY, acceptedPolicy.value\n )\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(user).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"form\", {\n key: 2,\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit()), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PrivacyPolicy)\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((acceptedPolicy).value = $event))\n }, null, 512), [\n [_vModelCheckbox, acceptedPolicy.value]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ]),\n _createVNode(_component_router_link, { to: \"/profile/edit/account\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.I_WANT_TO_DELETE_MY_ACCOUNT')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", _hoisted_6, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32))\n ]))\n}\n}\n\n})","import script from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPrivacyPolicyValidation.vue?vue&type=style&index=0&id=c77e04be&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c77e04be\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a844fa2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean };\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(formatDate)(\n _unref(client).issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=3a844fa2&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a844fa2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efa45ea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(formatDate)(\n client.issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=efa45ea0&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efa45ea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n };\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64eb8494\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\nconst _hoisted_12 = { key: 1 }\nconst _hoisted_13 = [\"href\"]\nconst _hoisted_14 = { class: \"about-instance\" }\nconst _hoisted_15 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const weather_provider: ComputedRef> = computed(() =>\n get_weather_provider()\n )\n\n function get_weather_provider() {\n const weather_provider: Record = {}\n if (appConfig.value.weather_provider === 'darksky') {\n weather_provider['name'] = 'Dark Sky'\n weather_provider['url'] = 'https://darksky.net'\n }\n if (appConfig.value.weather_provider === 'visualcrossing') {\n weather_provider['name'] = 'Visual Crossing'\n weather_provider['url'] = 'https://www.visualcrossing.com'\n }\n return weather_provider\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(weather_provider) && _unref(weather_provider).name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('about.WEATHER_DATA_FROM')) + \" \", 1),\n _createElementVNode(\"a\", {\n href: _unref(weather_provider).url,\n target: \"_blank\",\n rel: \"nofollow noopener\"\n }, _toDisplayString(_unref(weather_provider).name), 9, _hoisted_13)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).about)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"p\", _hoisted_14, _toDisplayString(_ctx.$t('about.ABOUT_THIS_INSTANCE')), 1),\n _createElementVNode(\"div\", {\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).about))\n }, null, 8, _hoisted_15)\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=64eb8494&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64eb8494\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-645a9e33\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_19 = { class: \"data-values\" }\n\nimport { Locale, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport };\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n function hasElevation(workout: IWorkout): boolean {\n return workout && workout.ascent !== null && workout.descent !== null\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(formatDate)(_unref(workout).workout_date, _unref(user).timezone, _unref(user).date_format)\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/ \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (hasElevation(_unref(workout)))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createTextVNode(\" +\"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/- \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=645a9e33&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-645a9e33\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n };\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n };\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n };\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n };\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n };\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n };\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n };\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import createI18n from '@/i18n'\nimport { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatDate, getDateFormat } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean,\n date_format: string\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatDate(record.workout_date, tz, date_format, false),\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean,\n date_format: string\n): IRecordsBySports => {\n date_format = getDateFormat(date_format, locale.value)\n return records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits, date_format)\n )\n }\n return sportList\n }, {})\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8d17c606\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n };\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=8d17c606&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8d17c606\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0c85cb8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent,\n props.user.date_format\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f0c85cb8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f0c85cb8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./PrivacyPolicyToAccept.vue?vue&type=template&id=05532ad6&scoped=true\"\nconst script = {}\n\nimport \"./PrivacyPolicyToAccept.vue?vue&type=style&index=0&id=05532ad6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05532ad6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4056e776\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = {\n key: 0,\n class: \"container privacy-policy-message\"\n}\nconst _hoisted_13 = { class: \"container\" }\nconst _hoisted_14 = { class: \"container dashboard-container\" }\nconst _hoisted_15 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_16 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_18 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import PrivacyPolicyToAccept from '@/components/PrivacyPolicyToAccept.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n (!_unref(authUser).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(PrivacyPolicyToAccept)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_17\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4056e776&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4056e776\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"privacy-policy\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1)\n\nimport { onBeforeMount } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicyView',\n setup(__props) {\n\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(PrivacyPolicy)\n ]),\n _hoisted_3\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58043acb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=58043acb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-58043acb\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport UserPrivacyPolicyValidation from '@/components/User/ProfileEdition/UserPrivacyPolicyValidation.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport PrivacyPolicyView from '@/views/PrivacyPolicyView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n {\n path: 'privacy-policy',\n name: 'UserPrivacyPolicy',\n component: UserPrivacyPolicyValidation,\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/privacy-policy',\n name: 'PrivacyPolicy',\n component: PrivacyPolicyView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about', '/privacy-policy']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n ACCEPT_PRIVACY_POLICY = 'ACCEPT_PRIVACY_POLICY',\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_REQUEST_DATA_EXPORT = 'GET_REQUEST_DATA_EXPORT',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n REQUEST_DATA_EXPORT = 'REQUEST_DATA_EXPORT',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n EXPORT_REQUEST = 'EXPORT_REQUEST',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n SET_EXPORT_REQUEST = 'SET_EXPORT_REQUEST',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_PRIVACY_POLICY = 'GET_APPLICATION_PRIVACY_POLICY',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_PRIVACY_POLICY = 'UPDATE_APPLICATION_PRIVACY_POLICY',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled' && error.response) {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (!res.data.data.accepted_privacy_policy) {\n // refresh privacy policy\n context.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n }\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY](\n context: ActionContext,\n acceptedPolicy: boolean\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/privacy-policy', {\n accepted_policy: acceptedPolicy,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/export/request')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/account/export')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]: (state: IAuthUserState) => {\n return state.exportRequest\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile, IExportRequest } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST](\n state: IAuthUserState,\n exportRequest: IExportRequest\n ) {\n state.exportRequest = exportRequest\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n exportRequest: null,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string | string[]\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](\n state: IRootState,\n appConfig: TAppConfig\n ) {\n state.application.config.privacy_policy = appConfig.privacy_policy\n state.application.config.privacy_policy_date = appConfig.privacy_policy_date\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const notes = payload.notes.replace(/\"/g, '\\\\\"')\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nimport createI18n from '@/i18n'\nimport { localeFromLanguage } from '@/utils/locales'\n\nconst { locale } = createI18n.global\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n dateFormat = getDateFormat(dateFormat, locale.value)\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat, {\n locale: localeFromLanguage[locale.value],\n }),\n workout_time: format(dateTime, timeFormat),\n }\n}\n\nconst availableDateFormats = [\n 'MM/dd/yyyy',\n 'dd/MM/yyyy',\n 'yyyy-MM-dd',\n 'date_string',\n]\nexport const dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n it: 'd MMM yyyy',\n // nb: 'do MMM yyyy',\n nl: 'd MMM yyyy',\n}\n\nexport const getDateFormat = (dateFormat: string, language: string): string => {\n return dateFormat === 'date_string' ? dateStringFormats[language] : dateFormat\n}\n\nexport const formatDate = (\n dateString: string,\n timezone: string,\n dateFormat: string,\n withTime = true,\n language: string | null = null,\n withSeconds = false\n): string => {\n if (!language) {\n language = locale.value\n }\n const timeFormat = withTime ? (withSeconds ? ' HH:mm:ss' : ' HH:mm') : ''\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${timeFormat}`,\n { locale: localeFromLanguage[language] }\n )\n}\n\nexport const availableDateFormatOptions = (\n inputDate: string,\n timezone: string,\n language: string | null = null\n) => {\n const l: string = language ? language : locale.value\n const options: Record[] = []\n availableDateFormats.map((df) => {\n const dateFormat = getDateFormat(df, l)\n options.push({\n label: `${dateFormat} - ${formatDate(\n inputDate,\n timezone,\n dateFormat,\n false,\n l\n )}`,\n value: df,\n })\n })\n return options\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IApiErrorMessage } from '@/types/api'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n const errorInfo: IApiErrorMessage | null =\n error?.response && error.response.data ? error.response.data : null\n\n // if stored token is blacklisted, disconnect user\n if (error?.response?.status === 401 && errorInfo?.error === 'invalid_token') {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : errorInfo?.message\n ? errorInfo.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","import linkifyHtml from 'linkify-html'\nimport sanitizeHtml from 'sanitize-html'\n\nexport const linkifyAndClean = (input: string): string => {\n return sanitizeHtml(linkifyHtml(input, { target: '_blank' }), {\n allowedTags: ['a'],\n disallowedTagsMode: 'escape',\n })\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, it, nl } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n it: it,\n // nb: nb, // disabled for now\n nl: nl,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n it: 'Italiano',\n // nb: 'Norsk bokmål', // disabled for now\n nl: 'Nederlands',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n 'Cycling (Virtual)': '#64a360',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Mountaineering: '#48b3b7',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport createI18n from '@/i18n'\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate, getDateFormat } from '@/utils/dates'\nimport { localeFromLanguage } from '@/utils/locales'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'MM/dd/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean,\n userDateFormat: string\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(\n key,\n params.duration === 'week'\n ? getDateFormat(userDateFormat, locale.value)\n : dateFormat.chart,\n { locale: localeFromLanguage[locale.value] }\n )\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n\nexport const getTemperature = (\n temperatureInCelsius: number,\n useImperialUnits: boolean\n): string => {\n const temperature = useImperialUnits\n ? temperatureInCelsius * 1.8 + 32\n : temperatureInCelsius\n const unit = useImperialUnits ? ' °F' : '°C'\n return `${temperature === 0 ? 0 : Number(temperature).toFixed(1)}${unit}`\n}\n\nexport const getWindSpeed = (\n windSpeedInMS: number,\n useImperialUnits: boolean\n): string => {\n const windSpeed = useImperialUnits ? windSpeedInMS * 2.2369363 : windSpeedInMS\n const unit = useImperialUnits ? ' mph' : 'm/s'\n return `${windSpeed === 0 ? 0 : Number(windSpeed).toFixed(1)}${unit}`\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n };\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string };\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string };\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n };\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const loadLanguagePackage = async (language: string) => {\n // no package available for norwegian bokmal and dutch (Nederlands)\n // fallback to english\n switch (language) {\n case 'fr':\n return await import(\n /* webpackChunkName: \"password.fr\" */ '@zxcvbn-ts/language-fr'\n )\n case 'de':\n return await import(\n /* webpackChunkName: \"password.de\" */ '@zxcvbn-ts/language-de'\n )\n case 'it':\n return await import(\n /* webpackChunkName: \"password.it\" */ '@zxcvbn-ts/language-it'\n )\n default:\n return await import(\n /* webpackChunkName: \"password.en\" */ '@zxcvbn-ts/language-en'\n )\n }\n}\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnLanguagePackage = await loadLanguagePackage(language)\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnLanguagePackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n };\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean };\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean };\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d5e9b348\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartOptions, LayoutItem } from 'chart.js'\n import { PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=1d43a4a8&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units,\n props.user.date_format\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=d5e9b348&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d5e9b348&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5e9b348\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-217519af\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate, getDateFormat } from '@/utils/dates'\n import { localeFromLanguage } from '@/utils/locales'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean };\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n authUser.value.timezone,\n authUser.value.date_format\n )\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(\n new Date(props.user.birth_date),\n `${getDateFormat(authUser.value.date_format, language.value)}`,\n { locale: localeFromLanguage[language.value] }\n )\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=217519af&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-217519af\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelCheckbox as _vModelCheckbox, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f112f24\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = {\n key: 5,\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_11 = [\"disabled\"]\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 3 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = { key: 4 }\nconst _hoisted_16 = { class: \"account\" }\nconst _hoisted_17 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n accepted_policy: false\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n formData.accepted_policy = false\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n disabled: _unref(registration_disabled),\n required: \"\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((formData.accepted_policy) = $event))\n }, null, 40, _hoisted_11), [\n [_vModelCheckbox, formData.accepted_policy]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: \"/privacy-policy\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_12)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=4f112f24&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4f112f24\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 3010,\n\t\"./en/en.ts\": 2709,\n\t\"./fr/fr.ts\": 5479,\n\t\"./it/it.ts\": 6013,\n\t\"./nb/nb.ts\": 1901,\n\t\"./nl/nl.ts\": 3726\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"222\":\"password.fr\",\"261\":\"password.en\",\"328\":\"admin\",\"401\":\"workouts\",\"802\":\"password.it\",\"845\":\"profile\",\"881\":\"password\",\"940\":\"password.de\"}[chunkId] || chunkId) + \".\" + {\"24\":\"685c3c25\",\"93\":\"37abd50d\",\"193\":\"f4227d0e\",\"222\":\"1d179591\",\"243\":\"d72fe9e5\",\"261\":\"b4ea7085\",\"328\":\"3f508723\",\"401\":\"a06ab85f\",\"431\":\"386df171\",\"633\":\"23ee7aff\",\"802\":\"be465eec\",\"845\":\"9d91816f\",\"858\":\"922b6a43\",\"881\":\"c0f2f8e4\",\"940\":\"b81f881f\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"c2966dd5\",\"845\":\"9f83730d\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(136); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","disabledLanguages","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","includes","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","privacy_policy","PrivacyPolicyTranslations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","href","__exports__","_hoisted_12","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","target","watch","_withDirectives","maxLength","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","CyclingVirtual","Hiking","MountainBiking","MountainBikingElectric","Mountaineering","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","rows","snarkdown","linkifyAndClean","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","formatDate","created_at","timezone","date_format","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","appLanguage","userLanguage","languageLabels","fistDayOfWeek","weekm","display_ascent","getDateFormat","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","exportRequest","exportRequestDate","getExportRequestDate","generatingLink","invalidateForm","updateUserForm","updatePassword","updateNewPassword","canRequestExport","isBefore","Date","subDays","updateProfile","payload","updateDisplayModal","deleteAccount","requestExport","async","downloadArchive","filename","responseType","then","archiveFileUrl","URL","createObjectURL","Blob","archive_link","createElement","setAttribute","appendChild","click","finally","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","status","file_name","file_size","first_name","last_name","birth_date","location","bio","registrationDate","format","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","fittrackee_private_policy_date","getTimezone","private_policy_date","getPolicyDate","paragraphs","Intl","DateTimeFormat","resolvedOptions","timeZone","dateStringFormats","privacy_policy_date","paragraph","acceptedPolicy","accepted_privacy_policy","PrivacyPolicy","_vModelCheckbox","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","rel","weather_provider","get_weather_provider","src","alt","BikePic","About","workout","hasElevation","ascent","descent","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","getDateWithTZ","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","PrivacyPolicyToAccept","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","UserPrivacyPolicyValidation","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","PrivacyPolicyView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","accepted_policy","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","formatWorkoutDate","dateTime","timeFormat","workout_time","availableDateFormats","de","en","fr","it","nl","dateString","withTime","withSeconds","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","sanitizeHtml","linkifyHtml","allowedTags","disallowedTagsMode","availableLocales","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","userDateFormat","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","getTemperature","temperatureInCelsius","temperature","Number","getWindSpeed","windSpeedInMS","windSpeed","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","loadLanguagePackage","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnLanguagePackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.4a1985d7.js b/fittrackee/dist/static/js/app.4a1985d7.js deleted file mode 100644 index f5ed32cb..00000000 --- a/fittrackee/dist/static/js/app.4a1985d7.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){var e={5167:function(e,n,t){"use strict";var r=t(6154),a=t(8566),o=t(2894),i=t(5801),s=t(2024);const l=r.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,a.a)(e);a.j.set(t,n);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const n=`Bearer ${r}`;e.headers&&e.headers.Authorization!==n&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,a.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,a.a)(e.response.config),Promise.reject(e)))),n["Z"]=l},8566:function(e,n,t){"use strict";t.d(n,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:n,url:t,params:r={},data:a={}}=e;return[n,t,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const n=a(e);if(r.has(n)){const e=r.get(n)||{};e?.abort(),r.delete(n)}return n}},2540:function(e,n,t){"use strict";var r=t(9150);const a=["nb"];function o(){const e=t(4612),n={};return e.keys().forEach((t=>{const r=t.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];n[a]=e(t).default}})),n}n["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},3010:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Über diese Instanz"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["unter ",t(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Quellcode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Wetterdaten von:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt."])},TEXT:e=>{const{normalize:n}=e;return n(["Detaillierte Instanz-Informationen"])}},ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt-E-Mail des Administrators"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. Dateianzahl im zip Archiv"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. Anzahl aktiver Nutzer"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Neue E-Mail"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Kein Text eingegeben"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Das wasswort wurde zurückgesetzt."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainings existieren"])},IMAGE:e=>{const{normalize:n}=e;return n(["Bild"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aktualisiere Anwemdungskonfiguration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:n}=e;return n(["Nutzer"])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["Adminstatus"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Accountstatus"])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["Trainingsanzahl"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte entfernen"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Die E-Mail Adresse wurde aktualisiert."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netzwerkfehler."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum vollständigen Export existiert bereits."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fehler beim Einlesen der GPX-Datei"])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fehler bei der GPX-Verarbeitung."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:n}=e;return n(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:n}=e;return n(["Keine Datei ausgewählt."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum Datenexport existiert bereits."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Gebe ein gültiges Authentifizierungstoken an."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sportart existiert nicht."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrierung erfolgreich."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Du hast keine Berechtigung."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["Nächste"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["Vorhergehende"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorisieren"])},BACK:e=>{const{normalize:n}=e;return n(["Zurück"])},CANCEL:e=>{const{normalize:n}=e;return n(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:n}=e;return n(["Deaktivieren"])},EDIT:e=>{const{normalize:n}=e;return n(["Bearbeiten"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aktivieren"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NO:e=>{const{normalize:n}=e;return n(["Nein"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Daten-Export anfragen"])},RESET:e=>{const{normalize:n}=e;return n(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Speichern"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["Über"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bestätigung"])},CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["Tag"]),n(["Tage"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["Dokumentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Versteckt"])},HOME:e=>{const{normalize:n}=e;return n(["Startseite"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["aufsteigend"])},DESC:e=>{const{normalize:n}=e;return n(["absteigend"])},LABEL:e=>{const{normalize:n}=e;return n(["sortieren"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sortiert nach"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["pro Seite"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Dieser Monat"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Etwas lief schief"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["ID"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Erstellt am"])},NAME:e=>{const{normalize:n}=e;return n(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Geltungsbereich"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf auth-Endpunkte"])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf workouts-Endpunkte"])}},URL:e=>{const{normalize:n}=e;return n(["Anwendungs-URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2-Anwendungen"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Anwendung ",t(r(0))," fragt an:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n([t(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:n}=e;return n(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(["Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst."])},TITLE:e=>{const{normalize:n}=e;return n(["Account löschen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\n\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Änderungen unserer Datenschutzrichtlinie"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Die folgenden Informationen werden gesammelt:\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\n- Technische Informationen (Browser und Betriebssystem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welche Informationen sammeln wir?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\n\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\n\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\n\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen."])},TITLE:e=>{const{normalize:n}=e;return n(["Geben wir Informationen an Außenstehende weiter?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst."])},TITLE:e=>{const{normalize:n}=e;return n(["Wie schützen wir deinen Informationen?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken."])},TITLE:e=>{const{normalize:n}=e;return n(["Für was verwenden wir deine Informationen?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\n\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\n\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein."])},TITLE:e=>{const{normalize:n}=e;return n(["Seitennutzung durch Kinder"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu."])},TITLE:e=>{const{normalize:n}=e;return n(["Deine Zustimmung"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Letztes Update"])},TITLE:e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergsteigen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rudern"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Gehen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistik"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["Monat"])},week:e=>{const{normalize:n}=e;return n(["Woche"])},year:e=>{const{normalize:n}=e;return n(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:n}=e;return n(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Gebe ein Passwort ein"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Datenexport"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archiv herunterladen"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generiere Link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Du kannst alle 24 Stunden ein Archiv anfragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fehlgeschlagen (bitte frage einen anderen Export an)"])},in_progress:e=>{const{normalize:n}=e;return n(["in Arbeit..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte fordere ein neues Passworts an."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ich möchte meinen Account löschen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Datenschutzrichtlinie wurde aktualisiert, bitte ",t(r(0))," sie vor dem Fortfahren."])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmeldung"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Abmelden"])},LOG_IN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Passwort vergessen?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["mittel"])},GOOD:e=>{const{normalize:n}=e;return n(["gut"])},LABEL:e=>{const{normalize:n}=e;return n(["Passwortstärke"])},STRONG:e=>{const{normalize:n}=e;return n(["start"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Schreibe einige, aber nicht alle Buchstaben groß."])},anotherWord:e=>{const{normalize:n}=e;return n(["Füge weitere weniger gebräuchliche Wörter hinzu."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},capitalization:e=>{const{normalize:n}=e;return n(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:n}=e;return n(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},l33t:e=>{const{normalize:n}=e;return n(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},noNeed:e=>{const{normalize:n}=e;return n(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:n}=e;return n(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermeide Angabe von letzten Jahreszahlen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermeide wiederholungen von Wörtern und Zeichen."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},sequences:e=>{const{normalize:n}=e;return n(["Vermeide gebräuchliche Zeichenfolgen."])},useWords:e=>{const{normalize:n}=e;return n(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])}},WEAK:e=>{const{normalize:n}=e;return n(["schwach"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Dein Passwort wurde aktualisiert. Klicke ",t(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Zurück zum Profil"])},BIO:e=>{const{normalize:n}=e;return n(["Biographie"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:n}=e;return n(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Bitte ",t(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Erster Tag der Woche"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Vorname"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nachname"])},LOCATION:e=>{const{normalize:n}=e;return n(["Ort"])},MONDAY:e=>{const{normalize:n}=e;return n(["Montag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Bildausgabe"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Bild entfernen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Bild aktualisieren"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Einstellungsausgabe"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},COLOR:e=>{const{normalize:n}=e;return n(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["aktiv"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Geschwindigkeitsschwellenwert für Stopp"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sportarten-Einstellungsausgabe"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["Konto"])},APPS:e=>{const{normalize:n}=e;return n(["Anwendungen"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE:e=>{const{normalize:n}=e;return n(["Profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["Sportarten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Zeitzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperiales System (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Einheiten für die Distanz"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisches System (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ich habe die ",t(r(0))," gelesen und stimme ihr zu."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Entschuldigung, die Registrierung ist deaktiviert."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["E-Mail zur Kontobestätigung erneut senden"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},REVIEW:e=>{const{normalize:n}=e;return n(["überprüfen"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Dieser Account ist inaktiv."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["Benutzerbild"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Du hast die ",t(r(0))," akzeptiert."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["Analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["Aufstieg"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschnittsgeschwindigkeit"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["zurück zum Training"])},DATE:e=>{const{normalize:n}=e;return n(["Datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["zeige Filter"])},DISTANCE:e=>{const{normalize:n}=e;return n(["Entfernung"])},DURATION:e=>{const{normalize:n}=e;return n(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:n}=e;return n(["Höhe"])},END:e=>{const{normalize:n}=e;return n(["Ende"])},FROM:e=>{const{normalize:n}=e;return n(["Von"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberge Filter"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["Die Distanz muss größer als 0 sein"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["Die Dauer muss größer als 0 Sekunden sein"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nächstes Training"])},NOTES:e=>{const{normalize:n}=e;return n(["Anmerkungen"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Keine Trainings."])},PAUSES:e=>{const{normalize:n}=e;return n(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorheriges Training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["Aufzeichnung"]),n(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["Segment"]),n(["Segmente"])])},SPEED:e=>{const{normalize:n}=e;return n(["Geschwindigkeit"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["Sportart"]),n(["Sportarten"])])},START:e=>{const{normalize:n}=e;return n(["Start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:n}=e;return n(["Titel"])},TO:e=>{const{normalize:n}=e;return n(["bis"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Füge erstes Training hinzu!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["klarer Tag"])},"clear-night":e=>{const{normalize:n}=e;return n(["klare Nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["wolkig"])},fog:e=>{const{normalize:n}=e;return n(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:n}=e;return n(["Regen"])},sleet:e=>{const{normalize:n}=e;return n(["Schneeregen"])},snow:e=>{const{normalize:n}=e;return n(["Schnee"])},wind:e=>{const{normalize:n}=e;return n(["Wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["Temperatur"])},WIND:e=>{const{normalize:n}=e;return n(["Wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OSO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SO"])},SSE:e=>{const{normalize:n}=e;return n(["SSO"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["ohne .gpx Datei"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["mit .gpx Datei"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["Training"]),n(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["oder .zip Datei mit .gpx Dateien"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},2709:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["About this instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["under ",t(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Source code"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weather data from:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Any additional information that may be useful to your users. Markdown syntax can be used."])},TEXT:e=>{const{normalize:n}=e;return n(["Detailed instance information"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activate account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Add/remove admin rights, delete user account."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email for contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. files of zip archive"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["If 0, no limitation on registration."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. number of active users"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to delete ",t(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to reset ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Current email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["New email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["No text entered"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The password has been reset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workouts exist"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Update application configuration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["user"]),n(["users"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["registration date"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["username"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["workout count"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Remove admin rights"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The email address has been updated."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Network Error."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["At least one file in zip archive exceeds size limit, please check the archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["A completed export request already exists."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: valid email must be provided."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Error during gpx file parsing."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Error during gpx processing."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Invalid credentials."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:n}=e;return n(["No file provided."])},"no selected file":e=>{const{normalize:n}=e;return n(["No selected file."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["A data export request already exists."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Provide a valid auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expired. Please log in again."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sport does not exist."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Successfully registered."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["The number of files in the archive exceeds the limit."])},"user does not exist":e=>{const{normalize:n}=e;return n(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["You do not have permissions."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["next"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["previous"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Authorize"])},BACK:e=>{const{normalize:n}=e;return n(["Back"])},CANCEL:e=>{const{normalize:n}=e;return n(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Delete my account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disable"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit"])},ENABLE:e=>{const{normalize:n}=e;return n(["Enable"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Request data export"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Submit"])},YES:e=>{const{normalize:n}=e;return n(["Yes"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["day"]),n(["days"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Displayed"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation"])},HERE:e=>{const{normalize:n}=e;return n(["here"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Hidden"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascending"])},DESC:e=>{const{normalize:n}=e;return n(["descending"])},LABEL:e=>{const{normalize:n}=e;return n(["sort"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["order by"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["This month"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page not found"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Something went wrong"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Application description"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Application name"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["Application URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 applications"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The application ",t(r(0))," is requesting:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Authorize ",t(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Delete application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Add an application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application not found!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["All existing associated tokens have been revoked."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['You can request the deletion of your account at any time by going to this address (after logging in) and clicking on "Delete My Account" button in your account edition.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account deletion"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["If we decide to change our privacy policy, we will post those changes on this page.\n\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Changes to our Privacy Policy"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["The following information are collected:\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\n- Technical information (browser name and operating system)."])},TITLE:e=>{const{normalize:n}=e;return n(["What information do we collect?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\n\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \n\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\n\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password."])},TITLE:e=>{const{normalize:n}=e;return n(["Do we disclose any information to outside parties?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information."])},TITLE:e=>{const{normalize:n}=e;return n(["How do we protect your information?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\n- The email address you provide may be used to send you information or confirm your account modifications."])},TITLE:e=>{const{normalize:n}=e;return n(["What do we use your information for?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\n\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\n\nLaw requirements can be different if this server is in another jurisdiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Site usage by children"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["By using our site, you consent to our web site privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Your Consent"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Last update"])},TITLE:e=>{const{normalize:n}=e;return n(["privacy policy"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Electric)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Mountaineering"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rowing"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Walking"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistics"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["month"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Current password"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Enter a password"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Download archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generating link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["You can request an archive by 24 hours"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["errored (please request another export)"])},in_progress:e=>{const{normalize:n}=e;return n(["in progres..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["hide password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Invalid token, please request a new password reset."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["I want to delete my account"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The privacy policy has been updated, please ",t(r(0))," it before proceeding."])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["New password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["No users found."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Forgot password?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["At least 8 characters required."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["average"])},GOOD:e=>{const{normalize:n}=e;return n(["good"])},LABEL:e=>{const{normalize:n}=e;return n(["password strength"])},STRONG:e=>{const{normalize:n}=e;return n(["strong"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Capitalize some, but not all letters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Add more words that are less common."])},associatedYears:e=>{const{normalize:n}=e;return n(["Avoid years that are associated with you."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalize more than the first letter."])},dates:e=>{const{normalize:n}=e;return n(["Avoid dates and years that are associated with you."])},l33t:e=>{const{normalize:n}=e;return n(["Avoid predictable letter substitutions like ","@"," for a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Use longer keyboard patterns and change typing direction multiple times."])},noNeed:e=>{const{normalize:n}=e;return n(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:n}=e;return n(["If you use this password elsewhere, you should change it."])},recentYears:e=>{const{normalize:n}=e;return n(["Avoid recent years."])},repeated:e=>{const{normalize:n}=e;return n(["Avoid repeated words and characters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Avoid reversed spellings of common words."])},sequences:e=>{const{normalize:n}=e;return n(["Avoid common character sequences."])},useWords:e=>{const{normalize:n}=e;return n(["Use multiple words, but avoid common phrases."])}},WEAK:e=>{const{normalize:n}=e;return n(["weak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Your password have been updated. Click ",t(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account edition"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Back to profile"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Birth date"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Date display format"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Please ",t(r(0))," to change your email address again or contact the administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["First day of week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["First name"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Last name"])},LOCATION:e=>{const{normalize:n}=e;return n(["Location"])},MONDAY:e=>{const{normalize:n}=e;return n(["Monday"])},PICTURE:e=>{const{normalize:n}=e;return n(["Picture"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Picture edition"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Remove picture"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Update picture"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferences edition"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacy policy"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registration date"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["active"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["stopped speed threshold"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sports preferences edition"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["picture"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["privacy policy"])},PROFILE:e=>{const{normalize:n}=e;return n(["profile"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperial system (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Units for distance"])},METRIC:e=>{const{normalize:n}=e;return n(["Metric system (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["I have read and agree to the ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registration is disabled."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Resend account confirmation email"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset your password"])},REVIEW:e=>{const{normalize:n}=e;return n(["review"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["This user account is inactive."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["user picture"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["You have accepted the ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Add a workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analysis"])},ASCENT:e=>{const{normalize:n}=e;return n(["ascent"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["average speed"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["ave. speed"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["back to workout"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["display filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["duration"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Edit the workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevation"])},END:e=>{const{normalize:n}=e;return n(["end"])},FROM:e=>{const{normalize:n}=e;return n(["from"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["hide filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Both elevation values must be provided and be greater than or equal to 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. altitude"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max files"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max size"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Next workout"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["No file provided"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["no folder inside"])},NO_MAP:e=>{const{normalize:n}=e;return n(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["No next workout"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["No previous workout"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["No records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["No workouts."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Previous workout"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Ave. speed"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Farthest distance"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Highest ascent"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Longest duration"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["remaining characters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["speed"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["start elevation axis at zero"])},TITLE:e=>{const{normalize:n}=e;return n(["title"])},TO:e=>{const{normalize:n}=e;return n(["to"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Upload one!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["clear day"])},"clear-night":e=>{const{normalize:n}=e;return n(["clear night"])},cloudy:e=>{const{normalize:n}=e;return n(["cloudy"])},fog:e=>{const{normalize:n}=e;return n(["fog"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["partly cloudy night"])},rain:e=>{const{normalize:n}=e;return n(["rain"])},sleet:e=>{const{normalize:n}=e;return n(["sleet"])},snow:e=>{const{normalize:n}=e;return n(["snow"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidity"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperature"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["without .gpx file"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["with .gpx file"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["or .zip file containing .gpx files"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},5479:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["A propos de cette instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["sous licence ",t(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Code source (en)"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Source des données météo :"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée."])},TEXT:e=>{const{normalize:n}=e;return n(["Information détaillée de l'instance"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activer le compte"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email de l'administrateur pour contact "])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Nombre max. de fichiers dans une archive zip "])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Si égal à 0, pas limite d'inscription"])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Nombre maximum d'utilisateurs actifs "])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:n}=e;return n(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",t(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",t(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nouvelle adresse email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["pas de texte saisi"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Le mot de passe a été réinitialisé."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["des séances existent"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Configurer l'application."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Changer l'email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utilisateur"]),n(["utilisateurs"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["status administrateur"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["statut du compte"])},USERNAME:e=>{const{normalize:n}=e;return n(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["nombre de séances"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Retirer les droits d'admin"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'adresse email a été mise à jour."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Erreur réseau."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Une demande d'export terminée existe déjà."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Erreur lors de l'analyse du fichier."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Erreur lors du traitement du fichier gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Jeton de connexion, merci de vous reconnecter."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"no file part":e=>{const{normalize:n}=e;return n(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:n}=e;return n(["Pas de fichier sélectionné."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Une demande d'export de données est en cours"])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Merci de fournir un jeton de connexion valide."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Ce sport n'existe pas."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["suivant"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["précédent"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autoriser"])},BACK:e=>{const{normalize:n}=e;return n(["Retour"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:n}=e;return n(["Désactiver"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier"])},ENABLE:e=>{const{normalize:n}=e;return n(["Activer"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtrer"])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},NO:e=>{const{normalize:n}=e;return n(["Non"])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Demander un export de données"])},RESET:e=>{const{normalize:n}=e;return n(["Réinit."])},SUBMIT:e=>{const{normalize:n}=e;return n(["Valider"])},YES:e=>{const{normalize:n}=e;return n(["Oui"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["à propos"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["jour"]),n(["jours"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Affiché"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["ici"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Masqué"])},HOME:e=>{const{normalize:n}=e;return n(["Accueil"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascendant"])},DESC:e=>{const{normalize:n}=e;return n(["descendant"])},LABEL:e=>{const{normalize:n}=e;return n(["tri"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["trier par "])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Ce mois-ci"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page introuvable"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Une erreur s'est produite"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Créée le"])},NAME:e=>{const{normalize:n}=e;return n(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:n}=e;return n(["URL de l'application"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applications OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'application ",t(r(0))," demande les accès suivants :"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autoriser ",t(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application introuvable !"])},NO_APPS:e=>{const{normalize:n}=e;return n(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tous les jetons associés existants ont été révoqués."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous "Supprimer mon compte" dans l\'espace de mise à jour de votre compte.'])},TITLE:e=>{const{normalize:n}=e;return n(["Suppression du compte"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\n\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Modifications de notre politique de confidentialité"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Les informations suivantes sont collectées :\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\n- Données techniques (nom du navigateur et du système d'exploitation)."])},TITLE:e=>{const{normalize:n}=e;return n(["Quelles sont les informations que nous recueillons ?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\n\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\n\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\n\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe."])},TITLE:e=>{const{normalize:n}=e;return n(["Divulguons-nous des informations à des tiers ?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment protégeons-nous vos informations ?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment utilisons-nous vos informations ?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\n\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\n\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Protection des mineurs"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["En utilisant notre site, vous acceptez la politique de confidentialité de notre site web."])},TITLE:e=>{const{normalize:n}=e;return n(["Votre consentement"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Dernière mise à jour"])},TITLE:e=>{const{normalize:n}=e;return n(["politique de confidentialité"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["VTT (Électrique)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinisme"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Aviron"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Marche"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiques"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mois"])},week:e=>{const{normalize:n}=e;return n(["semaine"])},year:e=>{const{normalize:n}=e;return n(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:n}=e;return n(["Courriel"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Saisissez un mot de passe"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Export des données"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Télécharger l'archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["lien en cours de génération..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Vous pouvez demander un export par 24h"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["en erreur (veuillez demander une nouvelle archive)"])},in_progress:e=>{const{normalize:n}=e;return n(["en cours..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Je souhaite supprimer mon compte"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La politique de confidentialité a été mise à jour. Veuillez l'",t(r(0))," avant de poursuivre."])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Se déconnecter"])},LOG_IN:e=>{const{normalize:n}=e;return n(["connecter"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Mot de passe oublié ?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["8 caractères minimum."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["moyenne"])},GOOD:e=>{const{normalize:n}=e;return n(["bonne"])},LABEL:e=>{const{normalize:n}=e;return n(["robustesse du mot de passe"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Mettez quelques lettres en majuscules, mais pas toutes."])},anotherWord:e=>{const{normalize:n}=e;return n(["Ajoutez des mots moins courants."])},associatedYears:e=>{const{normalize:n}=e;return n(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:n}=e;return n(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},l33t:e=>{const{normalize:n}=e;return n(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},noNeed:e=>{const{normalize:n}=e;return n(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:n}=e;return n(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])},recentYears:e=>{const{normalize:n}=e;return n(["Évitez les dernières années."])},repeated:e=>{const{normalize:n}=e;return n(["Évitez les mots et les caractères répétés."])},reverseWords:e=>{const{normalize:n}=e;return n(["Évitez les orthographes inversées des mots courants."])},sequences:e=>{const{normalize:n}=e;return n(["Évitez les séquences de caractères courantes."])},useWords:e=>{const{normalize:n}=e;return n(["Utilisez plusieurs mots, mais évitez les phrases courantes."])}},WEAK:e=>{const{normalize:n}=e;return n(["faible"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Votre mot de passe a été mis à jour. Cliquez ",t(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Revenir au profil"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Veuillez vous ",t(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Prénom"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nom"])},LOCATION:e=>{const{normalize:n}=e;return n(["Lieu"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lundi"])},PICTURE:e=>{const{normalize:n}=e;return n(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour de l'image de profil"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Supprimer"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Mettre à jour l'image"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Politique de confidentialité"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Date d'inscription"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actif"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["seuil de vitesse arrêtée"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences des sports"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["compte"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["image"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["préférences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["politique de confidentialité"])},PROFILE:e=>{const{normalize:n}=e;return n(["profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Fuseau horaire"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Système impérial (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unités pour les distances"])},METRIC:e=>{const{normalize:n}=e;return n(["Système métrique (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["J'ai lu et accepte la ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinitialiser votre mot de passe"])},REVIEW:e=>{const{normalize:n}=e;return n(["accepter"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Le compte de cet utilisateur est inactif."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["photo de l'utilisateur"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Vous avez accepté la ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["revenir à la séance"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["afficher les filtres"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["durée"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifier la séance"])},ELEVATION:e=>{const{normalize:n}=e;return n(["altitude"])},END:e=>{const{normalize:n}=e;return n(["fin"])},FROM:e=>{const{normalize:n}=e;return n(["à partir de"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["masquer les filtres"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude max"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["taille max. "])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance suivante"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["pas de répertoire"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Pas de séances."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance précédente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["vitesse"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["début"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titre"])},TO:e=>{const{normalize:n}=e;return n(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajoutez votre première séance !"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["ensoleillé"])},"clear-night":e=>{const{normalize:n}=e;return n(["nuit claire"])},cloudy:e=>{const{normalize:n}=e;return n(["nuageux"])},fog:e=>{const{normalize:n}=e;return n(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:n}=e;return n(["pluie"])},sleet:e=>{const{normalize:n}=e;return n(["neige fondue"])},snow:e=>{const{normalize:n}=e;return n(["neige"])},wind:e=>{const{normalize:n}=e;return n(["venteux"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidité"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["température"])},WIND:e=>{const{normalize:n}=e;return n(["vent"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNO"])},NW:e=>{const{normalize:n}=e;return n(["NO"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSO"])},SW:e=>{const{normalize:n}=e;return n(["SO"])},W:e=>{const{normalize:n}=e;return n(["O"])},WNW:e=>{const{normalize:n}=e;return n(["ONO"])},WSW:e=>{const{normalize:n}=e;return n(["OSO"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["sans fichier .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["avec un fichier .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["séance"]),n(["séances"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["ou une archive .zip contenant des fichiers .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},6013:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contatta l'amministratore"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee è un tracker self-hosted per attività outdoor."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sotto licenza ",t(r(0))," "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Codice sorgente"])}},a={ACTION:e=>{const{normalize:n}=e;return n(["Azione"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Attiva account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Amministrazione"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aggiungi/rimuovi permessi, elimina account utente."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicazione"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email di contatto dell'amministratore"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di files zip"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Se settato a 0, non ci sono limiti per le registrazioni."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di utenti attivi"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["nessuna mail di contatto"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dei file caricabili (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Configurazione applicazione"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dell'archivio zip (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Ritorna ad amministrazione"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler eliminare ",t(r(0))," account? Tutti i dati verranno persi, quest'azione non può essere annullata."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler resettare ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Email corrente"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Elimina utente"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'invio di email è disabilitato."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Attiva/Disattiva sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nuova email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["La password è stata reimpostata."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento disabilitata."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento abilitata."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workout esistono"])},IMAGE:e=>{const{normalize:n}=e;return n(["Immagine"])},LABEL:e=>{const{normalize:n}=e;return n(["Etichetta"])}},TITLE:e=>{const{normalize:n}=e;return n(["Amministrazione sport"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aggiorna configurazione applicazione."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aggiorna email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utente"]),n(["utenti"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["stato admin"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["data di registrazione"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["stato account"])},USERNAME:e=>{const{normalize:n}=e;return n(["nome utente"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["numero di workout"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Aggiungi permessi di amministratore"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Rimuovi permessi di amministratore"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'indirizzo email è stato aggiornato."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Errore di rete."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amminstratore."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: dev'essere inserita un'email valida."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Errore nella lettura del file gpx."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Errore nell'elaborazione del file gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Errore nella lettura della configurazione."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Errore nell'aggiornamento della configurazione"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Errore, per favore riprova o contatta l'amministratore."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Errore, la registrazione è disabilitata."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File con estensione non permessa."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La dimensione del file è maggiore di quella massima permessa."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Credenziali errate."])},"invalid payload":e=>{const{normalize:n}=e;return n(["I dati inseriti non sono validi."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nuova email dev'essere diversa dalla vecchia mail"])},"no file part":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"no selected file":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: la password inserita e la conferma non combaciano."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Insersci un token di autenticazione valido."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto. Per favore ripeti il log in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Mi dispiace, quell'username è già esistente."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Questo sport non esiste."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrato con successo."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Il numero di files nell'archivio supera il limite massimo permesso."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utente non esiste."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Dev'essere inserita un'email valida"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Non hai i permessi necessari."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["avanti"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["precedente"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Re-invia email di conferma"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorizza"])},BACK:e=>{const{normalize:n}=e;return n(["Indietro"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annulla"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Resetta filtri"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Elimina il mio account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disattiva"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica"])},ENABLE:e=>{const{normalize:n}=e;return n(["Attiva"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtra"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Invia"])},YES:e=>{const{normalize:n}=e;return n(["Si"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Conferma"])},CONTACT:e=>{const{normalize:n}=e;return n(["contatto"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["giorno"]),n(["giorni"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Mostrato"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentazione"])},HERE:e=>{const{normalize:n}=e;return n(["qui"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Nascosto"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["Dal più basso al più alto"])},DESC:e=>{const{normalize:n}=e;return n(["Dal più alto al più basso"])},LABEL:e=>{const{normalize:n}=e;return n(["ordina"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["ordina per"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totale"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Questo mese"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina non trovata"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout non trovato"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Qualcosa è andato storto"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amministratore."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi una nuova applicazione OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Descrizione applicazione"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Nome applicazione"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL redirect"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura alla configurazioen dell'applicazione."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a usersendpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["URL applicazione"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applicazioni OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare quest'app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'applicazione ",t(r(0))," sta chiedendo:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autorizzi ",t(r(0))," ad utilizzare il tuo account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copia nella clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Elimina applicazione"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi applicazione"])},NO_APP:e=>{const{normalize:n}=e;return n(["Applicazione non trovata!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["nessuna applicazione"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["nessuna descrizione"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Rimuovi tutti i tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler rimuovere tutti i token?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tutti i token esistenti associati sono stati rimossi."])}},d={},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Trasporto)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cicliscmo (Virtuale)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Escursioni"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Elettrica)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinismo"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Canottaggio"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Corsa"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Alpino)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Racchette da neve"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Sentieri"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Camminata"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiche"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mese"])},week:e=>{const{normalize:n}=e;return n(["settimana"])},year:e=>{const{normalize:n}=e;return n(["anno"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Non hai ricevuto istruzioni?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hai già un account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata"])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Password corrente"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Inserisci un indirizzo email valido."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Inserisci una password"])},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtra per username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["nascondi password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Token invalido, per favore richiedi un nuovo reset della password."])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nuova password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Nessun utente trovato."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Password dimenticata?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Inserisci almeno 8 caratteri."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Reset password"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["media"])},GOOD:e=>{const{normalize:n}=e;return n(["buona"])},LABEL:e=>{const{normalize:n}=e;return n(["sicurezza password"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Inserisci qualche maiuscola."])},anotherWord:e=>{const{normalize:n}=e;return n(["Aggiungi più parole che sono meno comuni."])},associatedYears:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},capitalization:e=>{const{normalize:n}=e;return n(["Inserisci maiuscole oltre alla prima lettera."])},dates:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},l33t:e=>{const{normalize:n}=e;return n(["Evita sostituzioni prevedibili, per esempio, ","@"," per la a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Usa patterns più lunghi e cambia direzione di scrittura più volte."])},noNeed:e=>{const{normalize:n}=e;return n(["Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole."])},pwned:e=>{const{normalize:n}=e;return n(["È consigliabile cambiare questa password se è utilizzata per altro."])},recentYears:e=>{const{normalize:n}=e;return n(["Evita date recenti."])},repeated:e=>{const{normalize:n}=e;return n(["Evita di ripetere lettere e parole."])},reverseWords:e=>{const{normalize:n}=e;return n(["Evita di scrivere parole al contrario."])},sequences:e=>{const{normalize:n}=e;return n(["Evita sequenze di caratteri comuni."])},useWords:e=>{const{normalize:n}=e;return n(["Usa più parole, ma evita frasi comuni."])}},WEAK:e=>{const{normalize:n}=e;return n(["bassa"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La tua password è stata aggiornata. Clicca ",t(r(0))," per effettuare il login."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Tipo di account"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Dati relativi alle salite (singoli, totale)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Ritorna al profilo"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Data di nascita"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Formato data"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica profilo"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze sport"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Per favore ",t(r(0))," per cambiare di nuovo la tua mail o contatta l'amministratore"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Primo giorno della settimana"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Nome"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Cognome"])},LOCATION:e=>{const{normalize:n}=e;return n(["Posizione"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lunedì"])},PICTURE:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Rimuovi foto"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Aggiorna foto"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profilo"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Data di registrazione"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["azione"])},COLOR:e=>{const{normalize:n}=e;return n(["colore"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disattivato dall'amministratore"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["attivo"])},LABEL:e=>{const{normalize:n}=e;return n(["etichetta"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Limite minimo di velocità"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze sport"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Il tuo account è stato creato con successo."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un link per attivare il tuo account è stato inviato all'indirizzo specificato."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Domenica"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["foto"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferenze"])},PROFILE:e=>{const{normalize:n}=e;return n(["profilo"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Sistema imperiale (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unità per la distanza"])},METRIC:e=>{const{normalize:n}=e;return n(["Sistema metrico (m, km, m/s, °C)"])}}},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Mi dispiace, la registrazione è disabilitata."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Re-invia email di conferma dell'account"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Resetta password"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["mostra password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Questo account è inattivo."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo "_".'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["foto profilo"])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Aggiungi un workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analisi"])},ASCENT:e=>{const{normalize:n}=e;return n(["salita"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["velocità media"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vel. media"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["ritorna al workout"])},DATE:e=>{const{normalize:n}=e;return n(["data"])},DESCENT:e=>{const{normalize:n}=e;return n(["discesa"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["mostra filtri"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distanza"])},DURATION:e=>{const{normalize:n}=e;return n(["durata"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifica il workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevazione"])},END:e=>{const{normalize:n}=e;return n(["fine"])},FROM:e=>{const{normalize:n}=e;return n(["da"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["file .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["nascondi filtri"])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distanza dev'essere maggiore di 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durata dev'essere maggiore di 0"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Ultimi workout"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica più workout"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine massima"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["file massimi"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["dimensione massima"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["velocità massima"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine minima"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Prossimo workout"])},NOTES:e=>{const{normalize:n}=e;return n(["note"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(['data dal file gpx, senza "pulizia"'])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Nessun file scelto"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["nessuna cartella all'interno"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Nessuna mappa"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout successivo"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Nessuna nota"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento precedente"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout precedente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Nessun record."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Nessun workout."])},PAUSES:e=>{const{normalize:n}=e;return n(["pause"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segmento precedente"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Workout precedente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vel. media"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distanza più lunga"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Salita più alta"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durata più lunga"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vel. massima"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["caratteri rimanenti"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segmento"]),n(["segmenti"])])},SPEED:e=>{const{normalize:n}=e;return n(["velocità"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["inizio"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Inizio e fine"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["partenza asse elevazione a 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titolo"])},TO:e=>{const{normalize:n}=e;return n(["a"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durata totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica file!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["cielo chiaro"])},"clear-night":e=>{const{normalize:n}=e;return n(["notte chiara"])},cloudy:e=>{const{normalize:n}=e;return n(["nuvoloso"])},fog:e=>{const{normalize:n}=e;return n(["nebbia"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["parzialmente nuvoloso"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["notte parzialmente nuvolosa"])},rain:e=>{const{normalize:n}=e;return n(["pioggia"])},sleet:e=>{const{normalize:n}=e;return n(["nevischio"])},snow:e=>{const{normalize:n}=e;return n(["neve"])},wind:e=>{const{normalize:n}=e;return n(["vento"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["umidità"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatura"])},WIND:e=>{const{normalize:n}=e;return n(["vento"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["senza file .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["con file .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["data workout"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare questo workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["file .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["o file .zip contenente files .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},1901:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},3726:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Over deze instantie"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is zelf-gehoste activiteiten tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Onder ",t(r(0))," licentie "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Broncode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weer gegevens van:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden."])},TEXT:e=>{const{normalize:n}=e;return n(["Gedetailleerde informatie over deze instantie"])}},ACTION:e=>{const{normalize:n}=e;return n(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activeer account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Instellingen"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email voor contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal bestanden in zip archief"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Bij 0, geen limiet op registratie."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal actieve gebruikers"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["geen contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van bestanden voor upload (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van zip archief (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Terug naar beheer"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u de account ",t(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u het wachtwoord voor ",t(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Huidige email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Verwijder gebruiker"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nieuwe email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Geen tekst ingegeven"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het wachtwoord werd gereset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainingen aanwezig"])},IMAGE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Beheer sporten"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["De applicatie configureren."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["gebruiker"]),n(["gebruikers"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["aantal trainingen"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Verwijder admin rechten"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het emailadres werd bijgewerkt."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netwerk fout."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een voltooide export aanvraag."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: een geldige email is vereist."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fout bij het verwerken van het gpx bestand."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fout bij verwerken van gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Bestandsformaat niet toegelaten."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Bestandsgrootte is groter dan toegestaan."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:n}=e;return n(["Geen bestand geselecteerd."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een export aanvraag."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Geef een geldig auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signatuur verlopen. Log opnieuw in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Deze sport bestaat niet."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Succesvol geregistreerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["U hebt geen machtigingen."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["volgende"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["vorige"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Toekennen"])},BACK:e=>{const{normalize:n}=e;return n(["Terug"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Verwijder mijn account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Uitzetten"])},EDIT:e=>{const{normalize:n}=e;return n(["Bewerken"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aanzetten"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},NO:e=>{const{normalize:n}=e;return n(["Nee"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreer"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export aanvragen"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Opslaan"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["over"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bevestiging"])},CONTACT:e=>{const{normalize:n}=e;return n(["contacteer"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["dag"]),n(["dagen"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Weergegeven"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentatie"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Verborgen"])},HOME:e=>{const{normalize:n}=e;return n(["Startscherm"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["oplopend"])},DESC:e=>{const{normalize:n}=e;return n(["aflopend"])},LABEL:e=>{const{normalize:n}=e;return n(["sorteer"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Deze maand"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Nieuwe OAuth2 app toevoegen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheim"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["App omschrijving"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Probleem bij"])},NAME:e=>{const{normalize:n}=e;return n(["Naam van de app"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Omvang"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["geeft toestemming tot aanpassen van de applicatie instellingen."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["App URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 apps"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["De app ",t(r(0))," vraagt:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Toegang geven aan ",t(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Verwijder app"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Voeg een app toe"])},NO_APP:e=>{const{normalize:n}=e;return n(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle bestaande tokens werden ingetrokken."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop "Verwijder mijn account" te klikken in uw instellingen.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account verwijderen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\n\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Aanpassingen aan ons Privacybeleid"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["De volgende informatie wordt verzameld:\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\n- Technische informatie (de browsernaam en naam van het besturingssysteem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welke informatie wordt er door ons verzameld?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\n\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\n\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\n\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen."])},TITLE:e=>{const{normalize:n}=e;return n(["Wordt er informatie met derden gedeeld?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie."])},TITLE:e=>{const{normalize:n}=e;return n(["Hoe beschermen we uw informatie?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden."])},TITLE:e=>{const{normalize:n}=e;return n(["Waarvoor wordt de opgegeven informatie gebruikt?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\n\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\n\nWetgeving kan verschillen als de server zich op een andere plaats bevindt."])},TITLE:e=>{const{normalize:n}=e;return n(["Gebruik door minderjarigen"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Door deze site te gebruiken, gaat u akkoord met ons privacybeleid."])},TITLE:e=>{const{normalize:n}=e;return n(["Uw toestemming"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Laatste aanpassing"])},TITLE:e=>{const{normalize:n}=e;return n(["privacybeleid"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Virtueel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Trektocht"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (Elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergbeklimmen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Roeien"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Sneeuwschoenen"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandelen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistieken"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["maand"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["jaar"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Al een account aangemaakt?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Geef een paswoord in"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data exporteren"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archief downloaden"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["link aanmaken..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Je kan 1 keer per 24h een archief aanvragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fout (gelieve een nieuw archief aan te vragen)"])},in_progress:e=>{const{normalize:n}=e;return n(["Bezig met verwerken..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ik wil mijn account verwijderen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Het privacybeleid werd aangepast, gelieve te ",t(r(0))," voor verdergaan."])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Uitloggen"])},LOG_IN:e=>{const{normalize:n}=e;return n(["inloggen"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Wachtwoord"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Wachtwoord vergeten?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Tenminste 8 karakters vereist."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Wachtwoord reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["gemiddeld"])},GOOD:e=>{const{normalize:n}=e;return n(["goed"])},LABEL:e=>{const{normalize:n}=e;return n(["wachtwoord sterkte"])},STRONG:e=>{const{normalize:n}=e;return n(["sterk"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Gebruik enkele hoofdletters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Voeg meer niet gangbare woorden toe."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermijd jaartallen met een persoonlijke betekenis."])},capitalization:e=>{const{normalize:n}=e;return n(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:n}=e;return n(["Vermijd persoonlijke gegevens en jaartallen."])},l33t:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},noNeed:e=>{const{normalize:n}=e;return n(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])},pwned:e=>{const{normalize:n}=e;return n(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermijd recente jaartallen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermijd opeenvolgende woorden en karakters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},sequences:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare opeenvolgingen."])},useWords:e=>{const{normalize:n}=e;return n(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])}},WEAK:e=>{const{normalize:n}=e;return n(["zwak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Uw wachtwoord werd aangepast. Klik ",t(r(0))," om in te loggen."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account aanpassen"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Hoogte gerelateerde data (opnames, totaal)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Terug naar profiel"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Sport voorkeuren wijzigen"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Gelieve ",t(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Eerste dag van de week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Voornaam"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Achternaam"])},LOCATION:e=>{const{normalize:n}=e;return n(["Locatie"])},MONDAY:e=>{const{normalize:n}=e;return n(["Maandag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Afbeelding aanpassen"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Afbeelding verwijderen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Afbeelding veranderen"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Voorkeuren aanpassen"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Datum registratie"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["actie"])},COLOR:e=>{const{normalize:n}=e;return n(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actief"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["snelheidsgrens voor stilstand"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sport voorkeuren aanpassen"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["afbeelding"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["voorkeuren"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE:e=>{const{normalize:n}=e;return n(["profiel"])},SPORTS:e=>{const{normalize:n}=e;return n(["sporten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Tijdzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperialistisch systeem (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Eenheid voor afstand"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisch systeem (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ik heb het ",t(r(0))," gelezen en goedgekeurd."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registreren is uitgeschakeld."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Opnieuw zenden van account bevestigingsmail"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset uw wachtwoord"])},REVIEW:e=>{const{normalize:n}=e;return n(["beoordeling"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Deze account is niet actief."])},USERNAME:e=>{const{normalize:n}=e;return n(["Gebruikersnaam"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["gebruikersafbeelding"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["U hebt het ",t(r(0))," aanvaard."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["geklommen"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["gemiddelde snelheid"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["gem. snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["Terug naar training"])},DATE:e=>{const{normalize:n}=e;return n(["datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["gedaald"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["toon filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["afstand"])},DURATION:e=>{const{normalize:n}=e;return n(["duur"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training aanpassen"])},ELEVATION:e=>{const{normalize:n}=e;return n(["hoogte"])},END:e=>{const{normalize:n}=e;return n(["einde"])},FROM:e=>{const{normalize:n}=e;return n(["van"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberg filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["De afstand moet groter zijn dan 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["De duur moet langer zijn dan 0 seconden"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. hoogte"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max. grootte"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Volgende training"])},NOTES:e=>{const{normalize:n}=e;return n(["notities"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data vanuit gpx, zonder op te schonen"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen vorige training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Geen records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Geen trainingen."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorige training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Gem. snelheid"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Langste afstand"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Langste duur"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["resterende karakters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segmenten"])])},SPEED:e=>{const{normalize:n}=e;return n(["snelheid"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sporten"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start en aankomst"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titel"])},TO:e=>{const{normalize:n}=e;return n(["aan"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Eén uploaden!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["heldere dag"])},"clear-night":e=>{const{normalize:n}=e;return n(["heldere nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["bewolkt"])},fog:e=>{const{normalize:n}=e;return n(["mist"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:n}=e;return n(["regen"])},sleet:e=>{const{normalize:n}=e;return n(["natte sneeuw"])},snow:e=>{const{normalize:n}=e;return n(["sneeuw"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatuur"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OZO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["Z"])},SE:e=>{const{normalize:n}=e;return n(["ZO"])},SSE:e=>{const{normalize:n}=e;return n(["ZZO"])},SSW:e=>{const{normalize:n}=e;return n(["ZZW"])},SW:e=>{const{normalize:n}=e;return n(["ZW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WZW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["zonder .gpx bestand"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["met .gpx bestand"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["training"]),n(["trainingen"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["datum training"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["of .zip archief met .gpx bestanden"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},136:function(e,n,t){"use strict";var r=t(3148),a=t(7028),o=t(9963),i=t(2343),s=t(5205);(0,s.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=t(6252),c=t(2262),u=t(3577);const d=e=>((0,l.dD)("data-v-97e20d3a"),e=e(),(0,l.Cn)(),e),m={id:"footer"},E={class:"footer-items"},_={class:"footer-item"},S=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},z=["href"],I=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),R={class:"footer-item"};var g=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const n=e,{adminContact:t,version:r}=(0,c.BK)(n);return(e,n)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",E,[(0,l._)("div",_,[S,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(t)}`},(0,u.zw)(e.$t("common.CONTACT")),9,z)])):(0,l.kq)("",!0),I,(0,l._)("div",R,[(0,l.Wm)(a,{to:"/privacy-policy"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])])])}}}),N=t(3744);const U=(0,N.Z)(g,[["__scopeId","data-v-97e20d3a"]]);var h=U,v=(t(7658),t(6595)),C=t(5801),w=t(9917),D=t(6287);const f=e=>((0,l.dD)("data-v-ab6e62ae"),e=e(),(0,l.Cn)(),e),P={id:"nav"},k={class:"nav-container"},L={class:"nav-app-name"},b={class:"nav-items-close"},M=f((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),y={key:0,class:"nav-items-group"},G=f((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),F={class:"nav-items-user-menu"},W={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},B={key:1,class:"nav-items-group"},x=f((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var K=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:n}){const t=(0,w.o)(),r=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,n("menuInteraction",!0)}function d(){i.value=!1,n("menuInteraction",!1)}function m(e){t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){t.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,n)=>{const t=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",k,[(0,l._)("div",L,[(0,l._)("div",{class:"nav-item app-name",onClick:n[0]||(n[0]=n=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":i.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:n[1]||(n[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[M,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:n[2]||(n[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:n[3]||(n[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",y,[(0,l.Wm)(t,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(t,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),G])):(0,l.kq)("",!0)]),(0,l._)("div",F,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",W,[(0,l._)("div",Y,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(t,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:E},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",B,[(0,l.Wm)(t,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(t,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(_,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[x])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const H=(0,N.Z)(K,[["__scopeId","data-v-ab6e62ae"]]);var $=H,Z=t(7167);const V={id:"no-config"},q={class:"error-page"},j={class:"error-img"},X=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,n)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",q,[(0,l._)("div",j,[(0,l.Wm)(Z.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,X)])]))}});const J=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var ee=J;const ne=(0,l._)("div",{id:"top"},null,-1),te={key:0,class:"app-container"},re={class:"app-loading"},ae={class:"container scroll"},oe=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[oe];var se=(0,l.aZ)({__name:"App",setup(e){const n=(0,w.o)(),t=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function i(e){a.value=e}function s(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&s(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function E(){let e="en";try{const n=navigator.language.split("-")[0];n in D.v1&&(e=n)}catch(t){e="en"}n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),n.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,n)=>{const s=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)($,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",te,[(0,l._)("div",re,[(0,l.Wm)(s)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(ee,{key:1}))],2)),(0,l._)("div",ae,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(h,{key:2,version:(0,c.SU)(t)?(0,c.SU)(t).version:"",adminContact:(0,c.SU)(t).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const le=se;var ce=le,ue=t(2540),de=t(1020),me=t(2894);const Ee={class:"alert-message"},_e=["innerHTML"];var Se=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Ee,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(t))},null,8,_e)]))}});const Te=(0,N.Z)(Se,[["__scopeId","data-v-69d7e4ff"]]);var pe=Te,Ae=t(2531);const Oe={class:"custom-textarea"},ze=["id","name","maxLength","disabled"],Ie={class:"remaining-chars"};var Re=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:n}){const t=e,r=(0,c.iH)("");function a(e){n("updateValue",e.target.value)}return(0,l.YP)((()=>t.input),(e=>{r.value=null===e?"":e})),(n,t)=>((0,l.wg)(),(0,l.iD)("div",Oe,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLength:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value=e),onInput:a},null,40,ze),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(n.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const ge=(0,N.Z)(Re,[["__scopeId","data-v-eb7fa534"]]);var Ne=ge,Ue=t(3649),he=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const n=e,{digits:t,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(n),m=(0,l.Fl)((()=>d.value?Ue.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,Ue.sC)(a.value,s.value,m.value,t.value):parseFloat(a.value.toFixed(t.value))));return(e,n)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(E)),3),(0,l.Uk)(" "+(0,u.zw)(" ")+" "),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,N.Z)(he,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,we=t(2201);const De={class:"dropdown-wrapper"},fe={key:0,class:"dropdown-list"},Pe=["onClick"];var ke=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:n}){const t=e,r=(0,we.yj)(),a=(0,c.iH)(!1),o=t.options.map((e=>e));function i(){a.value=!a.value}function s(e){n("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(n,t)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(n.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:n.value===e.selected}]),key:t,onClick:e=>s(n)},(0,u.zw)(n.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Le=(0,N.Z)(ke,[["__scopeId","data-v-9590c0e6"]]);var be=Le;const Me={class:"error-message"},ye={key:0},Ge={key:1};var Fe=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Me,[Array.isArray((0,c.SU)(t))?((0,l.wg)(),(0,l.iD)("ul",ye,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(t),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},(0,u.zw)(e.$t(n)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Ge,(0,u.zw)(e.$t((0,c.SU)(t))),1))]))}});const We=(0,N.Z)(Fe,[["__scopeId","data-v-2659a79a"]]);var Ye=We;const Be={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},xe=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ke=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),He=[xe,Ke];function $e(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ze={name:"CyclingSport"};const Ve=(0,N.Z)(Ze,[["render",$e]]);var qe=Ve;const je={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Xe=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Qe=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),Je=[Xe,Qe];function en(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",je,Je)}var nn={name:"CyclingTransport"};const tn=(0,N.Z)(nn,[["render",en]]);var rn=tn;const an={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},on=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),sn=[on];function ln(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",an,sn)}var cn={name:"CyclingVirtual"};const un=(0,N.Z)(cn,[["render",ln]]);var dn=un;const mn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},En=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_n=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),Sn=[En,_n];function Tn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mn,Sn)}var pn={name:"Hiking"};const An=(0,N.Z)(pn,[["render",Tn]]);var On=An;const zn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},In=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),Rn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),gn=[In,Rn];function Nn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zn,gn)}var Un={name:"MountainBiking"};const hn=(0,N.Z)(Un,[["render",Nn]]);var vn=hn;const Cn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},wn=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Dn=[wn];function fn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"MountainBikingElectric"};const kn=(0,N.Z)(Pn,[["render",fn]]);var Ln=kn;const bn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"},Mn=(0,l.uE)(' silhouette of a person doing mountaineering ',2),yn=[Mn];function Gn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bn,yn)}var Fn={name:"Mountaineering"};const Wn=(0,N.Z)(Fn,[["render",Gn]]);var Yn=Wn;const Bn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},xn=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Kn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),Hn=[xn,Kn];function $n(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Bn,Hn)}var Zn={name:"Rowing"};const Vn=(0,N.Z)(Zn,[["render",$n]]);var qn=Vn;const jn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Xn=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Qn=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Jn=[Xn,Qn];function et(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",jn,Jn)}var nt={name:"Running"};const tt=(0,N.Z)(nt,[["render",et]]);var rt=tt;const at={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},ot=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),it=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),st=[ot,it];function lt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",at,st)}var ct={name:"SkiingAlpine"};const ut=(0,N.Z)(ct,[["render",lt]]);var dt=ut;const mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),_t=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),St=[Et,_t];function Tt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"SkiingCrossCountry"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const zt={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},It=(0,l.uE)('silhouette of a person with snowshoes',6),Rt=[It];function gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zt,Rt)}var Nt={name:"Snowshoes"};const Ut=(0,N.Z)(Nt,[["render",gt]]);var ht=Ut;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},Ct=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),wt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),Dt=[Ct,wt];function ft(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,Dt)}var Pt={name:"Trail"};const kt=(0,N.Z)(Pt,[["render",ft]]);var Lt=kt;const bt={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Mt=(0,l.uE)('silhouette of a walking person',3),yt=[Mt];function Gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bt,yt)}var Ft={name:"Walking"};const Wt=(0,N.Z)(Ft,[["render",Gt]]);var Yt=Wt;const Bt=["title"];var xt=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const n=e,{color:t,sportLabel:r,title:a}=(0,c.BK)(n),o=(0,l.f3)("sportColors");return(e,n)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(t)?(0,c.SU)(t):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rn,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dn,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(On,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ln,{key:5})):(0,l.kq)("",!0),"Mountaineering"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yn,{key:6})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qn,{key:7})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rt,{key:8})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:9})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:10})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ht,{key:11})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:12})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yt,{key:13})):(0,l.kq)("",!0)],12,Bt))}});const Kt=xt;var Ht=Kt;const $t={class:"loader"};function Zt(e,n){return(0,l.wg)(),(0,l.iD)("div",$t)}const Vt={},qt=(0,N.Z)(Vt,[["render",Zt],["__scopeId","data-v-4c9921ee"]]);var jt=qt;const Xt={id:"modal"},Qt={class:"custom-modal"},Jt={key:0,class:"modal-message"},er={key:1,class:"modal-message"},nr={class:"modal-buttons"};var tr=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:n}){const t=e,r=(0,w.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(t),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",Xt,[(0,l._)("div",Qt,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(i)?((0,l.wg)(),(0,l.iD)("div",Jt,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(i)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",er,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(s)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(s)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",nr,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=e=>n("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:t[1]||(t[1]=e=>n("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const rr=(0,N.Z)(tr,[["__scopeId","data-v-5aa8db48"]]);var ar=rr;const or=[{target:pe,name:"AlertMessage"},{target:Ae.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Ye,name:"ErrorMessage"},{target:jt,name:"Loader"},{target:ar,name:"Modal"},{target:Ht,name:"SportImage"}],ir={mounted:(e,n)=>{e.clickOutsideEvent=function(t){e===t.target||e.contains(t.target)||n.value(t)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var sr=t(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const lr=(0,o.ri)(ce).provide("sportColors",sr.Zo).use(ue.Z).use(me.Z).use(de.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",ir);or.forEach((e=>{lr.component(e.name,e.target)})),lr.mount("#app")},1020:function(e,n,t){"use strict";t.d(n,{Z:function(){return hc}});var r=t(2201),a=(t(7658),t(6252)),o=t(3577),i=t(9963),s=t(2262),l=t(9252),c=t(5801),u=t(9917),d=t(8966),m=t(2335);const E=e=>((0,a.dD)("data-v-80b4a9e6"),e=e(),(0,a.Cn)(),e),_={id:"admin-app",class:"admin-card"},S=["onSubmit"],T={for:"admin_contact"},p=["value"],A=["disabled"],O={for:"max_users"},z=["disabled"],I={class:"user-limit-help"},R={class:"info-box"},g=E((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),N={for:"max_single_file_size"},U=["disabled"],h={for:"max_zip_file_size"},v=["disabled"],C={for:"gpx_limit_import"},w=["disabled"],D={class:"about-label",for:"about"},f={class:"textarea-description"},P=["innerHTML"],k={class:"privacy-policy-label",for:"privacy_policy"},L={class:"textarea-description"},b=["innerHTML"],M={key:5,class:"form-buttons"},y={class:"confirm",type:"submit"},G=["onClick"],F={key:6,class:"form-buttons"};var W=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const n=e,{edition:t}=(0,s.BK)(n),E=(0,u.o)(),W=(0,r.tv)(),Y=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:""}),B=(0,a.Fl)((()=>E.getters[c.SY.GETTERS.ERROR_MESSAGES]));function x(e){Object.keys(Y).map((n=>{["max_single_file_size","max_zip_file_size"].includes(n)?Y[n]=(0,d.j)(e[n]):["about","privacy_policy"].includes(n)?Y[n]=null!==e[n]?e[n]:"":Y[n]=e[n]}))}function K(){x(n.appConfig),E.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),W.push("/admin/application")}function H(){const e=Object.assign({},Y);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,E.dispatch(c.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{n.appConfig&&x(n.appConfig)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",_,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,i.iM)(H,["prevent"])},[(0,a._)("label",T,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(t)||Y.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":n[0]||(n[0]=e=>Y.admin_contact=e),disabled:!(0,s.SU)(t)},null,8,A)),[[i.nr,Y.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,p))]),(0,a._)("label",O,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":n[1]||(n[1]=e=>Y.max_users=e),disabled:!(0,s.SU)(t)},null,8,z),[[i.nr,Y.max_users]])]),(0,a._)("div",I,[(0,a._)("span",R,[g,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",N,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":n[2]||(n[2]=e=>Y.max_single_file_size=e),disabled:!(0,s.SU)(t)},null,8,U),[[i.nr,Y.max_single_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":n[3]||(n[3]=e=>Y.max_zip_file_size=e),disabled:!(0,s.SU)(t)},null,8,v),[[i.nr,Y.max_zip_file_size]])]),(0,a._)("label",C,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":n[4]||(n[4]=e=>Y.gpx_limit_import=e),disabled:!(0,s.SU)(t)},null,8,w),[[i.nr,Y.gpx_limit_import]])]),(0,a._)("label",D,(0,o.zw)(e.$t("admin.ABOUT.TEXT"))+": ",1),(0,a._)("span",f,(0,o.zw)(e.$t("admin.ABOUT.DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":n[5]||(n[5]=e=>Y.about=e)},null,512)),[[i.nr,Y.about]]):((0,a.wg)(),(0,a.iD)("div",{key:1,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.about?Y.about:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,P)),(0,a._)("label",k,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE")))+": ",1),(0,a._)("span",L,(0,o.zw)(e.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":n[6]||(n[6]=e=>Y.privacy_policy=e)},null,512)),[[i.nr,Y.privacy_policy]]):((0,a.wg)(),(0,a.iD)("div",{key:3,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.privacy_policy?Y.privacy_policy:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,b)),(0,s.SU)(B)?((0,a.wg)(),(0,a.j4)(r,{key:4,message:(0,s.SU)(B)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t)?((0,a.wg)(),(0,a.iD)("div",M,[(0,a._)("button",y,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,G)])):((0,a.wg)(),(0,a.iD)("div",F,[(0,a._)("button",{class:"confirm",onClick:n[7]||(n[7]=(0,i.iM)((n=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:n[8]||(n[8]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,S)])),_:1})])}}}),Y=t(3744);const B=(0,Y.Z)(W,[["__scopeId","data-v-80b4a9e6"]]);var x=B;const K={class:"stat-card"},H={class:"stat-content box"},$={class:"stat-icon"},Z={class:"stat-details"},V={class:"stat-huge"},q={class:"stat"};var j=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const n=e,{icon:t,text:r,value:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("div",H,[(0,a._)("div",$,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(t)}`])},null,2)]),(0,a._)("div",Z,[(0,a._)("div",V,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",q,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const X=j;var Q=X;const J={id:"user-stats"};var ee=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const n=e,{appStatistics:t}=(0,s.BK)(n),r=(0,a.Fl)((()=>(0,d.Z)(t.value.uploads_dir_size,!1)));return(e,n)=>((0,a.wg)(),(0,a.iD)("div",J,[(0,a.Wm)(Q,{icon:"users",value:(0,s.SU)(t).users,text:e.$t("admin.USER",(0,s.SU)(t).users)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"tags",value:(0,s.SU)(t).sports,text:e.$t("workouts.SPORT",(0,s.SU)(t).sports)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(t).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(t).workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const ne=ee;var te=ne,re=t(2531);const ae=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),oe={id:"admin-menu",class:"center-card"},ie={class:"admin-menu description-list"},se={class:"application-config-details"},le=ae((()=>(0,a._)("br",null,null,-1))),ce={class:"registration-status"},ue={key:0,class:"email-sending-status"},de=ae((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var me=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const n=e,{appConfig:t,appStatistics:r}=(0,s.BK)(n);return(e,n)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",oe,[(0,a.Wm)(re.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(te,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",ie,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",se,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),le,(0,a._)("span",ce,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(t).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(t).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ue,[de,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const Ee=(0,Y.Z)(me,[["__scopeId","data-v-0dd66f89"]]);var _e=Ee,Se=t(9150),Te=t(631);const pe=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),Ae={id:"admin-sports",class:"admin-card"},Oe={class:"responsive-table"},ze=pe((()=>(0,a._)("th",null,"#",-1))),Ie={class:"text-left"},Re={class:"text-left sport-action"},ge=pe((()=>(0,a._)("th",null,null,-1))),Ne={class:"text-center"},Ue=pe((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),he={class:"cell-heading"},ve={class:"sport-label"},Ce={class:"cell-heading"},we={class:"text-center"},De={class:"cell-heading"},fe={class:"sport-action"},Pe={class:"cell-heading"},ke={class:"action-button"},Le=["onClick"],be={key:0,class:"has-workouts"},Me=pe((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ye=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:n}=(0,Se.QT)(),t=(0,u.o)(),r=(0,a.Fl)((()=>(0,Te.xH)(t.getters[c.O8.GETTERS.SPORTS],n))),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(e,n){t.dispatch(c.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:n})}return(e,n)=>{const t=(0,a.up)("SportImage"),c=(0,a.up)("ErrorMessage"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ae,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",Oe,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[ze,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",Re,(0,o.zw)(e.$t("admin.ACTION")),1),ge])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.id},[(0,a._)("td",Ne,[Ue,(0,a.Uk)(" "+(0,o.zw)(n.id),1)]),(0,a._)("td",null,[(0,a._)("span",he,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(t,{title:n.translatedLabel,"sport-label":n.label,color:n.color},null,8,["title","sport-label","color"])]),(0,a._)("td",ve,[(0,a._)("span",Ce,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(n.translatedLabel),1)]),(0,a._)("td",we,[(0,a._)("span",De,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(n.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",fe,[(0,a._)("span",Pe,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ke,[(0,a._)("button",{class:(0,o.C_)({danger:n.is_active}),onClick:e=>d(n.id,!n.is_active)},(0,o.zw)(e.$t(`buttons.${n.is_active?"DIS":"EN"}ABLE`)),11,Le),n.has_workouts?((0,a.wg)(),(0,a.iD)("span",be,[Me,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ge=(0,Y.Z)(ye,[["__scopeId","data-v-6d62af67"]]);var Fe=Ge,We=t(8626),Ye=t(5020),Be=t(6595);const xe={class:"users-filters"},Ke={class:"search-username"},He=["onKeyup","placeholder"];var $e=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:n}){const t=(0,r.yj)(),l=(0,s.iH)(t.query.q?t.query.q:"");function c(){""!==l.value&&n("filterOnUsername",l)}function u(){l.value="",n("filterOnUsername",l.value)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",xe,[(0,a._)("div",Ke,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":n[0]||(n[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,He),[[i.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const Ze=(0,Y.Z)($e,[["__scopeId","data-v-627a8e91"]]);var Ve=Ze,qe=t(2766),je=t(6558);const Xe=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),Qe={id:"admin-users",class:"admin-card"},Je={key:0,class:"no-users"},en={key:1,class:"responsive-table"},nn=Xe((()=>(0,a._)("th",null,"#",-1))),tn={class:"left-text"},rn={class:"left-text"},an={class:"left-text"},on={class:"cell-heading"},sn={class:"cell-heading"},ln={class:"cell-heading"},cn={class:"cell-heading"},un={class:"text-center"},dn={class:"cell-heading"},mn={class:"text-center"},En={class:"cell-heading"},_n={class:"text-center"},Sn={class:"cell-heading"},Tn={class:"text-center"},pn={class:"cell-heading"},An=["disabled","onClick"];var On=(0,a.aZ)({__name:"AdminUsers",setup(e){const n=(0,u.o)(),t=(0,r.yj)(),l=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,qe.pm)(t.query,d,m));const _=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.ERROR_MESSAGES]));function A(e){n.dispatch(c.RT.ACTIONS.GET_USERS,e)}function O(e){I("q",e.value)}function z(e,t){n.dispatch(c.RT.ACTIONS.UPDATE_USER,{username:e,admin:t})}function I(e,n){E[e]=n,"per_page"===e&&(E.page=1),l.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{n.dispatch(c.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>t.query),(e=>{E=(0,qe.pm)(e,d,m,{query:E}),A(E)})),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Qe,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ve,{onFilterOnUsername:O}),(0,a.Wm)(We.Z,{sort:(0,s.SU)(qe.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:I},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",Je,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",en,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[nn,(0,a._)("th",tn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",rn,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",an,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.username},[(0,a._)("td",null,[(0,a._)("span",on,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Be.Z,{user:n},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",sn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(t,{to:`/admin/users/${n.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",ln,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(n.email),1)]),(0,a._)("td",null,[(0,a._)("span",cn,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(je.p6)(n.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",un,[(0,a._)("span",dn,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(n.nb_workouts),1)]),(0,a._)("td",mn,[(0,a._)("span",En,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",_n,[(0,a._)("span",Sn,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",Tn,[(0,a._)("span",pn,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:n.admin}),disabled:n.username===(0,s.SU)(_).username,onClick:e=>z(n.username,!n.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${n.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,An)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Ye.Z,{key:0,path:"/admin/users",pagination:(0,s.SU)(T),query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,s.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const zn=(0,Y.Z)(On,[["__scopeId","data-v-dc12ff78"]]);var In=zn,Rn=t(2179);const gn={class:"profile-tabs custom-checkboxes-group"},Nn={class:"profile-tabs-checkboxes custom-checkboxes"},Un=["id","name","checked","disabled","onInput"];var hn=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const n=e,{tabs:t,selectedTab:r,disabled:i}=(0,s.BK)(n);function l(e){switch(e){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${n.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(n.edition?"/edit":"")}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",gn,[(0,a._)("div",Nn,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(t),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:n},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:n,name:n,checked:(0,s.SU)(r).split("/")[0]===n,disabled:(0,s.SU)(i),onInput:t=>e.$router.push(l(n))},null,40,Un),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${n}`)),1)])])))),128))])]))}});const vn=hn;var Cn=vn;const wn={id:"user-profile"},Dn={class:"box"};var fn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,{user:t,tab:r}=(0,s.BK)(n),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,n)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",wn,[(0,a.Wm)(Rn.Z,{user:(0,s.SU)(t)},null,8,["user"]),(0,a._)("div",Dn,[(0,a.Wm)(Cn,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(t)},null,8,["user"])])])}}});const Pn=(0,Y.Z)(fn,[["__scopeId","data-v-9729cba4"]]);var kn=Pn,Ln=t(1585),bn=t(6287);const Mn={id:"user-preferences",class:"description-list"},yn={class:"profile-buttons"};var Gn=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>n.user.language?bn.zK[n.user.language]:bn.zK.en)),l=(0,a.Fl)((()=>n.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>n.user.timezone?n.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>n.user.date_format?n.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>n.user.display_ascent?"DISPLAYED":"HIDDEN"));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`user.PROFILE.${(0,s.SU)(l)}`)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",yn,[(0,a._)("button",{onClick:t[0]||(t[0]=e=>n.$router.push("/profile/edit/preferences"))},(0,o.zw)(n.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:t[1]||(t[1]=e=>n.$router.push("/"))},(0,o.zw)(n.$t("common.HOME")),1)])]))}});const Fn=Gn;var Wn=Fn;const Yn={id:"user-profile-edition",class:"center-card"};var Bn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,t=(0,u.o)(),{user:r,tab:i}=(0,s.BK)(n),l=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","PRIVACY-POLICY"],d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING]));return(e,n)=>{const t=(0,a.up)("router-view"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Yn,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,s.SU)(i)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Cn,{tabs:l,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(t,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const xn=Bn;var Kn=xn,Hn=t(313),$n=t(7069),Zn=t(5167),Vn=t(8403);const qn=e=>((0,a.dD)("data-v-6e11106c"),e=e(),(0,a.Cn)(),e),jn={id:"user-infos-edition"},Xn={class:"profile-form form-box"},Qn={key:1,class:"info-box success-message"},Jn=["onSubmit"],et={class:"form-items",for:"email"},nt=["disabled"],tt={class:"form-items",for:"password-field"},rt={class:"form-items",for:"new-password-field"},at={class:"form-buttons"},ot={class:"confirm",type:"submit"},it=["onClick"],st={class:"data-export"},lt={class:"info-box"},ct=qn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),ut={key:0,class:"data-export-archive"},dt=qn((()=>(0,a._)("i",{class:"fa fa-download","aria-hidden":"true"},null,-1))),mt={key:1},Et={key:2},_t=qn((()=>(0,a._)("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1)));var St=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,s.qj)({email:"",password:"",new_password:""}),m=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.USER_LOADING])),E=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.IS_SUCCESS])),S=(0,s.iH)(!1),T=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,s.iH)(!1),A=(0,s.iH)(!1),O=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.EXPORT_REQUEST])),z=(0,a.Fl)((()=>h())),I=(0,s.iH)(!1);function R(){p.value=!0}function g(e){l.email=e.email}function N(e){l.password=e}function U(e){l.new_password=e}function h(){return O.value?(0,je.p6)(O.value.created_at,t.value.timezone,t.value.date_format,!0,null,!0):null}function v(){return!z.value||(0,Hn.Z)(new Date(z.value),(0,$n.Z)(new Date,1))}function C(){const e={email:l.email,password:l.password};l.new_password&&(e.new_password=l.new_password),S.value=l.email!==t.value.email,r.dispatch(c.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function w(e){A.value=e}function D(e){r.dispatch(c.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}function f(){r.dispatch(c.YN.ACTIONS.REQUEST_DATA_EXPORT)}async function P(e){I.value=!0,await Zn.Z.get(`/auth/account/export/${e}`,{responseType:"blob"}).then((n=>{const t=window.URL.createObjectURL(new Blob([n.data],{type:"application/zip"})),r=document.createElement("a");r.href=t,r.setAttribute("download",e),document.body.appendChild(r),r.click()})).finally((()=>I.value=!1))}return(0,a.bv)((()=>{n.user&&(r.dispatch(c.YN.ACTIONS.GET_REQUEST_DATA_EXPORT),g(n.user))})),(0,a.Ah)((()=>{r.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(N(""),U(""),g(t.value),p.value=!1)})),(0,a.YP)((()=>t.value.email),(async()=>{g(t.value)})),(e,n)=>{const r=(0,a.up)("Modal"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",jn,[A.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:n[0]||(n[0]=e=>D((0,s.SU)(t).username)),onCancelAction:n[1]||(n[1]=e=>w(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Xn,[(0,s.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(T)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Qn,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,s.SU)(E).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:p.value}),onSubmit:(0,i.iM)(C,["prevent"])},[(0,a._)("label",et,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":n[2]||(n[2]=e=>l.email=e),disabled:(0,s.SU)(m),required:!0,onInvalid:R},null,40,nt),[[i.nr,l.email]])]),(0,a._)("label",tt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(Vn.Z,{id:"password-field",disabled:(0,s.SU)(m),password:l.password,required:!0,onUpdatePassword:N,onPasswordError:R},null,8,["disabled","password"])]),(0,a._)("label",rt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(Vn.Z,{id:"new-password-field",disabled:(0,s.SU)(m),checkStrength:!0,password:l.new_password,isSuccess:!1,onUpdatePassword:U,onPasswordError:R},null,8,["disabled","password"])]),(0,a._)("div",at,[(0,a._)("button",ot,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:n[4]||(n[4]=(0,i.iM)((e=>w(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1),v()?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"confirm",onClick:(0,i.iM)(f,["prevent"])},(0,o.zw)(e.$t("buttons.REQUEST_DATA_EXPORT")),9,it)):(0,a.kq)("",!0)])],42,Jn),(0,a._)("div",st,[(0,a._)("span",lt,[ct,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),(0,s.SU)(O)?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+(0,o.zw)((0,s.SU)(z))+"): ",1),"successful"===(0,s.SU)(O).status?((0,a.wg)(),(0,a.iD)("span",{key:0,class:"archive-link",onClick:n[5]||(n[5]=(0,i.iM)((e=>P((0,s.SU)(O).file_name)),["prevent"]))},[dt,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+(0,o.zw)((0,s.SU)(d.Z)((0,s.SU)(O).file_size))+") ",1)])):((0,a.wg)(),(0,a.iD)("span",mt,(0,o.zw)(e.$t(`user.EXPORT_REQUEST.STATUS.${(0,s.SU)(O).status}`)),1)),I.value?((0,a.wg)(),(0,a.iD)("span",Et,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),_t])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])])])}}});const Tt=(0,Y.Z)(St,[["__scopeId","data-v-6e11106c"]]);var pt=Tt,At=t(6761);const Ot={id:"user-infos-edition"},zt={class:"profile-form form-box"},It=["onSubmit"],Rt={class:"form-items",for:"registrationDate"},gt=["value"],Nt={class:"form-items",for:"first_name"},Ut=["disabled"],ht={class:"form-items",for:"last_name"},vt={class:"form-items",for:"birth_date"},Ct=["disabled"],wt={class:"form-items",for:"location"},Dt=["disabled"],ft={class:"form-items"},Pt={class:"form-buttons"},kt={class:"confirm",type:"submit"};var Lt=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),l=(0,a.Fl)((()=>n.user.created_at?(0,je.p6)(n.user.created_at,n.user.timezone,n.user.date_format):"")),d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,At.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function _(e){r.bio=e}function S(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{n.user&&E(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage"),c=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Ot,[(0,a._)("div",zt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(S,["prevent"])},[(0,a._)("label",Rt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(l),disabled:""},null,8,gt)]),(0,a._)("label",Nt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":n[0]||(n[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,Ut),[[i.nr,r.first_name]])]),(0,a._)("label",ht,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":n[1]||(n[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",vt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":n[2]||(n[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,Ct),[[i.nr,r.birth_date]])]),(0,a._)("label",wt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":n[3]||(n[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,Dt),[[i.nr,r.location]])]),(0,a._)("label",ft,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(c,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",Pt,[(0,a._)("button",kt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,It)])])}}});const bt=(0,Y.Z)(Lt,[["__scopeId","data-v-5e5a4552"]]);var Mt=bt;const yt=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),Gt={id:"user-picture-edition"},Ft={class:"user-picture-form"},Wt=["onSubmit"],Yt={class:"picture-help"},Bt={class:"info-box"},xt=yt((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Kt={class:"picture-buttons"},Ht=["disabled"];var $t=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,d.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){t.dispatch(c.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&t.dispatch(c.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[(0,a._)("div",Ft,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",Yt,[(0,a._)("span",Bt,[xt,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Kt,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Ht),(0,s.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:S},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,Wt)])])}}});const Zt=(0,Y.Z)($t,[["__scopeId","data-v-687e9604"]]);var Vt=Zt;const qt=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],jt={id:"tz-dropdown"},Xt=["value","disabled","onKeydown"],Qt=["onClick","onMouseover","autofocus"];var Jt=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:n}){const t=e,{input:r,disabled:l}=(0,s.BK)(t),c=(0,s.iH)(t.input),u=(0,s.iH)(!1),d=(0,s.iH)(null),m=(0,s.iH)(0);function E(e){return e.toLowerCase().match(c.value.toLowerCase())}function _(e){m.value=e}function S(e){c.value=e,u.value=!1,n("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&S(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>t.input),(e=>{c.value=e})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",jt,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[n[0]||(n[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,Xt),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(qt).filter((e=>E(e))),((e,n)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:n===m.value}]),onClick:n=>S(e),onMouseover:e=>_(n),autofocus:n===m.value},(0,o.zw)(e),43,Qt)))),128))],512)):(0,a.kq)("",!0)]))}});const er=(0,Y.Z)(Jt,[["__scopeId","data-v-47ea2903"]]);var nr=er;const tr={id:"user-preferences-edition"},rr={class:"profile-form form-box"},ar=["onSubmit"],or={class:"form-items"},ir=["disabled"],sr=["value"],lr={class:"form-items"},cr={class:"form-items"},ur=["disabled"],dr=["value"],mr={class:"form-items form-checkboxes"},Er={class:"checkboxes-label"},_r={class:"checkboxes"},Sr=["id","name","checked","disabled","onInput"],Tr={class:"checkbox-label"},pr={class:"form-items form-checkboxes"},Ar={class:"checkboxes-label"},Or={class:"checkboxes"},zr=["id","name","checked","disabled","onInput"],Ir={class:"checkbox-label"},Rr={class:"form-items form-checkboxes"},gr={class:"checkboxes-label"},Nr={class:"checkboxes"},Ur=["id","name","checked","disabled","onInput"],hr={class:"checkbox-label"},vr={class:"form-buttons"},Cr={class:"confirm",type:"submit"};var wr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),l=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],E=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,je.d2)((new Date).toUTCString(),n.user.timezone,r.language)));function T(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.date_format=e.date_format?e.date_format:"dd/MM/yyyy",r.weekm=!!e.weekm&&e.weekm}function p(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function z(e){r.imperial_units=e}function I(e){r.weekm=e}return(0,a.bv)((()=>{n.user&&T(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",tr,[(0,a._)("div",rr,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(_)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("label",or,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":n[0]||(n[0]=e=>r.language=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(bn.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,sr)))),128))],8,ir),[[i.bM,r.language]])]),(0,a._)("label",lr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(nr,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",cr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":n[1]||(n[1]=e=>r.date_format=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,dr)))),128))],8,ur),[[i.bM,r.date_format]])]),(0,a._)("div",mr,[(0,a._)("span",Er,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",_r,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(l,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>I(n.value)},null,40,Sr),(0,a._)("span",Tr,(0,o.zw)(e.$t(`user.PROFILE.${n.label}`)),1)]))),64))])]),(0,a._)("div",pr,[(0,a._)("span",Ar,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Or,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>z(n.value)},null,40,zr),(0,a._)("span",Ir,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${n.label}`)),1)]))),64))])]),(0,a._)("div",Rr,[(0,a._)("span",gr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",Nr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(n.value)},null,40,Ur),(0,a._)("span",hr,(0,o.zw)(e.$t(`common.${n.label}`)),1)]))),64))])]),(0,a._)("div",vr,[(0,a._)("button",Cr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=(0,i.iM)((n=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,ar)])])}}});const Dr=(0,Y.Z)(wr,[["__scopeId","data-v-3b8a9a12"]]);var fr=Dr;const Pr={class:"privacy-policy-text"},kr={class:"last-update"},Lr=["innerHTML"],br=["innerHTML"];var Mr=(0,a.aZ)({__name:"PrivacyPolicy",setup(e){const n=(0,u.o)(),t="Sun, 26 Feb 2023 17:00:00 GMT",r=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),i=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.LANGUAGE])),d=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>A())),_=(0,a.Fl)((()=>p())),S=(0,a.Fl)((()=>O())),T=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"];function p(){return d.value.timezone?d.value.timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris"}function A(){return je.KD[i.value]}function O(){return(0,je.p6)(r.value.privacy_policy&&r.value.privacy_policy_date?`${r.value.privacy_policy_date}`:t,_.value,E.value,!1)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Pr,[(0,a._)("h1",null,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE"))),1),(0,a._)("p",kr,(0,o.zw)(e.$t("privacy_policy.LAST_UPDATE"))+": "+(0,o.zw)((0,s.SU)(S)),1),(0,s.SU)(r).privacy_policy?((0,a.wg)(),(0,a.iD)("div",{key:0,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(r).privacy_policy))},null,8,Lr)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},(0,a.Ko)(T,(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("h2",null,(0,o.zw)(e.$t(`privacy_policy.CONTENT.${n}.TITLE`)),1),(0,a._)("p",{innerHTML:(0,s.SU)(l.Z)(e.$t(`privacy_policy.CONTENT.${n}.CONTENT`))},null,8,br)],64)))),64))]))}});const yr=(0,Y.Z)(Mr,[["__scopeId","data-v-0c1693aa"]]);var Gr=yr;const Fr={id:"user-privacy-policy"},Wr={key:1},Yr={class:"policy-content"},Br={for:"accepted_policy",class:"accepted_policy"},xr={class:"form-buttons"},Kr={class:"confirm",type:"submit"};var Hr=(0,a.aZ)({__name:"UserPrivacyPolicyValidation",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),d=(0,s.iH)(!1);function m(){r.dispatch(c.YN.ACTIONS.ACCEPT_PRIVACY_POLICY,d.value)}return(0,a.Ah)((()=>{r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("router-link"),u=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Fr,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t).accepted_privacy_policy?((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",null,[(0,a.Wm)(u,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Wm)(c,{to:"/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})]),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):((0,a.wg)(),(0,a.iD)("form",{key:2,onSubmit:n[3]||(n[3]=(0,i.iM)((e=>m()),["prevent"]))},[(0,a._)("div",Yr,[(0,a.Wm)(Gr)]),(0,a._)("label",Br,[(0,a.wy)((0,a._)("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e)},null,512),[[i.e8,d.value]]),(0,a._)("span",null,[(0,a.Wm)(u,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])]),(0,a.Wm)(c,{to:"/profile/edit/account"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)])),_:1}),(0,a._)("div",xr,[(0,a._)("button",Kr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32))])}}});const $r=(0,Y.Z)(Hr,[["__scopeId","data-v-c77e04be"]]);var Zr=$r;const Vr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],qr=["application:write"],jr={id:"new-oauth2-app"},Xr={id:"new-oauth2-title"},Qr={id:"apps-form"},Jr=["onSubmit"],ea={class:"form-items"},na={class:"form-item"},ta={for:"app-name"},ra={class:"form-item"},aa={for:"app-description"},oa={class:"form-item"},ia={for:"app-url"},sa={class:"form-item"},la={for:"app-redirect-uri"},ca={class:"form-item-scope"},ua={class:"form-item-scope-label"},da={class:"scope-label"},ma=["name","checked","onChange"],Ea=["innerHTML"],_a={class:"form-buttons"},Sa=["disabled"];var Ta=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),l=(0,s.qj)([]),d=(0,a.Fl)((()=>S(n.authUser,qr,Vr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:l.sort().join(" ")};t.dispatch(c.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const n=l.indexOf(e);n>-1?l.splice(n,1):l.push(e)}function S(e,n,t){const r=[...t];return e.admin&&r.push(...n),r.sort()}return(e,n)=>{const t=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",jr,[(0,a._)("h1",Xr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Qr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",ea,[(0,a._)("div",na,[(0,a._)("label",ta,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":n[0]||(n[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",ra,[(0,a._)("label",aa,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(t,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",oa,[(0,a._)("label",ia,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",sa,[(0,a._)("label",la,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":n[2]||(n[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",ca,[(0,a._)("div",ua,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:n},[(0,a._)("label",da,[(0,a._)("input",{type:"checkbox",name:n,checked:l.includes(n),onChange:e=>_(n)},null,40,ma),(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Ea)])))),128))])]),(0,a._)("div",_a,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===l.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Sa),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Jr)])])}}});const pa=(0,Y.Z)(Ta,[["__scopeId","data-v-0657ee77"]]);var Aa=pa;const Oa={id:"authorize-oauth2-app"},za={key:0},Ia={id:"authorize-oauth2-title"},Ra={class:"oauth2-access description-list"},ga={class:"client-scope"},Na=["innerHTML"],Ua={class:"authorize-oauth2-buttons"},ha={key:1},va={class:"no-app"};var Ca=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const n=(0,r.yj)(),t=(0,u.o)(),i=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENT])),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(){n.query.client_id&&"string"===typeof n.query.client_id&&t.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,n.query.client_id)}function m(){t.dispatch(c.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${n.query.client_id}`,redirect_uri:`${n.query.redirect_uri}`,response_type:`${n.query.response_type}`,scope:`${n.query.scope}`,state:`${n.query.state?n.query.state:""}`,code_challenge:`${n.query.code_challenge?n.query.code_challenge:""}`,code_challenge_method:`${n.query.code_challenge_method?n.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Oa,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("h1",Ia,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).name),1)])),_:1},8,["to"])])),_:1})]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",Ra,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(i).scope.split(" "),(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("dt",ga,[(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Na)],64)))),128))]),(0,a._)("div",Ua,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",ha,[(0,a._)("p",va,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const wa=(0,Y.Z)(Ca,[["__scopeId","data-v-3b2fe9ed"]]);var Da=wa;const fa={id:"oauth2-apps"};var Pa=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n);return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(c.Km.MUTATIONS.SET_CLIENTS,[])})),(e,n)=>{const t=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",fa,[(0,a.Wm)(t,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const ka=Pa;var La=ka;const ba={id:"oauth2-app",class:"description-list"},Ma={key:1},ya={key:0,class:"info-box success-message"},Ga=["title"],Fa={key:0},Wa={key:1,class:"app-secret"},Ya=["title"],Ba={class:"client-scopes"},xa={class:"app-buttons"},Ka={key:2},Ha={class:"no-app"};var $a=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,r.yj)(),i=(0,u.o)(),{afterCreation:l,authUser:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.REVOCATION_SUCCESSFUL])),_=(0,s.iH)(!1),S=(0,s.iH)(null),T=(0,s.iH)(!1),p=(0,s.iH)(!1),A=(0,s.iH)(!1);function O(){!l.value&&t.params.id&&"string"===typeof t.params.id&&i.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_ID,+t.params.id)}function z(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",I(!0)}function I(e){_.value=e,e||(S.value=null)}function R(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(c.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(c.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function g(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{i.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(c.Km.MUTATIONS.EMPTY_CLIENT),i.commit(c.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&I(!1)})),(e,n)=>{const t=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",ba,[_.value?((0,a.wg)(),(0,a.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:n[0]||(n[0]=e=>R((0,s.SU)(m).id)),onCancelAction:n[1]||(n[1]=e=>I(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,s.SU)(m)&&(0,s.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",Ma,[(0,s.SU)(l)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ya,(0,o.zw)(e.$t((0,s.SU)(l)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_id)+" ",1),(0,s.SU)(l)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:g},null,10,Ga)):(0,a.kq)("",!0)]),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Fa,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",Wa,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:N},null,10,Ya)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.p6)((0,s.SU)(m).issued_at,(0,s.SU)(d).timezone,(0,s.SU)(d).date_format)),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,s.SU)(m).client_description})},(0,o.zw)((0,s.SU)(m).client_description?(0,s.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).redirect_uris.length>0?(0,s.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",Ba,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",xa,[(0,a._)("button",{class:"danger",onClick:n[2]||(n[2]=e=>z(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:n[3]||(n[3]=e=>z(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:n[4]||(n[4]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",Ka,[(0,a._)("p",Ha,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Za=(0,Y.Z)($a,[["__scopeId","data-v-3a844fa2"]]);var Va=Za;const qa={id:"oauth2-apps-list"},ja={class:"apps-list"},Xa={key:0},Qa={class:"app-issued-at"},Ja={key:1,class:"no-apps"},eo={class:"app-list-buttons"};var no=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),i=(0,r.yj)(),{authUser:l}=(0,s.BK)(n),d=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const n={};return e.page&&(n.page=(0,qe.z_)(e.page,qe.Hf)),n}function S(e){t.dispatch(c.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,n)=>{const t=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",qa,[(0,a._)("p",ja,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",Xa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("li",{key:n.client_id},[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:n.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.name),1)])),_:2},1032,["to"]),(0,a._)("span",Qa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(je.p6)(n.issued_at,(0,s.SU)(l).timezone,(0,s.SU)(l).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ja,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Ye.Z,{key:2,pagination:(0,s.SU)(m),path:"/profile/apps",query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",eo,[(0,a._)("button",{onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const to=(0,Y.Z)(no,[["__scopeId","data-v-efa45ea0"]]);var ro=to;const ao={id:"user-sport-preferences"},oo={key:0,class:"responsive-table"},io={class:"mobile-display"},so={key:0,class:"profile-buttons mobile-display"},lo={key:1,class:"profile-buttons"},co={class:"text-left"},uo={key:0},mo={class:"cell-heading"},Eo=["value"],_o={class:"cell-heading"},So={key:0,class:"disabled-message"},To={key:1,class:"fa fa-refresh fa-spin fa-fw"},po={class:"cell-heading"},Ao={class:"cell-heading"},Oo=["checked"],zo={class:"cell-heading"},Io=["value"],Ro={key:1},go={key:0,class:"action-buttons"},No={class:"cell-heading"},Uo=["onClick"],ho={key:1,class:"edition-buttons"},vo=["disabled"],Co=["disabled","onClick"],wo=["disabled"],Do={key:0,class:"profile-buttons"},fo={key:1,class:"profile-buttons"};var Po=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const n=e,t=(0,u.o)(),{t:r}=(0,Se.QT)(),{isEdition:l,user:d}=(0,s.BK)(n),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>t.getters[c.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,Te.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),A=(0,s.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:E?E[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):N()}function z(e){return A.sport_id===e}function I(e){A.color=e.target.value}function R(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function g(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function U(e){e.preventDefault(),t.dispatch(c.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,n){e.preventDefault(),t.dispatch(c.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,n)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,n)=>{const t=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",ao,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",oo,[(0,a._)("div",io,[(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",so,[(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",lo,[(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[2]||(n[2]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",co,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("th",uo,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(i=>((0,a.wg)(),(0,a.iD)("tr",{key:i.id},[(0,a._)("td",null,[(0,a._)("span",mo,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),z(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:I},null,40,Eo)):((0,a.wg)(),(0,a.j4)(t,{key:1,title:i.translatedLabel,"sport-label":i.label,color:i.color?i.color:(0,s.SU)(E)[i.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!i.is_active}])},[(0,a._)("span",_o,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(i.translatedLabel)+" ",1),i.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",So," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&z(i.id)?((0,a.wg)(),(0,a.iD)("i",To)):(0,a.kq)("",!0),(0,s.SU)(p)&&A.sport_id===i.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",po,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,s.SU)(d).sports_list.includes(i.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",Ao,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:g},null,40,Oo)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(i.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",zo,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:R},null,40,Io)):((0,a.wg)(),(0,a.iD)("span",Ro,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("td",go,[(0,a._)("span",No,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(i)},(0,o.zw)(e.$t("buttons.EDIT")),9,Uo)):(0,a.kq)("",!0),z(i.id)?((0,a.wg)(),(0,a.iD)("div",ho,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:U},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vo),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Co),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:n[3]||(n[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,wo)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",Do,[(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[6]||(n[6]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const ko=(0,Y.Z)(Po,[["__scopeId","data-v-74e52489"]]);var Lo=ko,bo=t(2894);const Mo=e=>((0,a.dD)("data-v-64eb8494"),e=e(),(0,a.Cn)(),e),yo={class:"about-text"},Go=["innerHTML"],Fo=Mo((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Wo={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},Yo=Mo((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),Bo={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},xo=Mo((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),Ko=Mo((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),Ho={key:0},$o=Mo((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),Zo=["href"],Vo={key:1},qo=["href"],jo={class:"about-instance"},Xo=["innerHTML"];var Qo=(0,a.aZ)({__name:"About",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),r=(0,a.Fl)((()=>i()));function i(){const e={};return"darksky"===t.value.weather_provider&&(e["name"]="Dark Sky",e["url"]="https://darksky.net"),"visualcrossing"===t.value.weather_provider&&(e["name"]="Visual Crossing",e["url"]="https://www.visualcrossing.com"),e}return(e,n)=>{const i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",yo,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Go),(0,a._)("p",null,[Fo,(0,a._)("a",Wo,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[Yo,(0,a._)("a",Bo,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[xo,(0,a.Wm)(i,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[Ko])),_:1})]),(0,s.SU)(t).admin_contact?((0,a.wg)(),(0,a.iD)("div",Ho,[$o,(0,a._)("a",{href:`mailto:${(0,s.SU)(t).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,Zo)])):(0,a.kq)("",!0),(0,s.SU)(r)&&(0,s.SU)(r).name?((0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Uk)((0,o.zw)(e.$t("about.WEATHER_DATA_FROM"))+" ",1),(0,a._)("a",{href:(0,s.SU)(r).url,target:"_blank",rel:"nofollow noopener"},(0,o.zw)((0,s.SU)(r).name),9,qo)])):(0,a.kq)("",!0),(0,s.SU)(t).about?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[(0,a._)("p",jo,(0,o.zw)(e.$t("about.ABOUT_THIS_INSTANCE")),1),(0,a._)("div",{innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(t).about))},null,8,Xo)],64)):(0,a.kq)("",!0)])])}}});const Jo=(0,Y.Z)(Qo,[["__scopeId","data-v-64eb8494"]]);var ei=Jo;const ni={id:"bike"},ti=["src"];function ri(e,n){return(0,a.wg)(),(0,a.iD)("div",ni,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,ti)])}const ai={},oi=(0,Y.Z)(ai,[["render",ri],["__scopeId","data-v-795f7f5f"]]);var ii=oi;const si={id:"about",class:"view"},li={class:"container"},ci={class:"container-sub"},ui={class:"container-sub about-details"};var di=(0,a.aZ)({__name:"AboutView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",si,[(0,a._)("div",li,[(0,a._)("div",ci,[(0,a.Wm)(ii)]),(0,a._)("div",ui,[(0,a.Wm)(ei)])])]))}});const mi=(0,Y.Z)(di,[["__scopeId","data-v-bffb50d0"]]);var Ei=mi,_i=t(1818),Si=t(2056);const Ti=e=>((0,a.dD)("data-v-645a9e33"),e=e(),(0,a.Cn)(),e),pi={class:"timeline-workout"},Ai={class:"box"},Oi={class:"workout-user-date"},zi={class:"workout-user"},Ii=["title"],Ri={key:0},gi={key:1,class:"no-map"},Ni={class:"img"},Ui={class:"data"},hi=Ti((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),vi={key:0},Ci={class:"data"},wi=Ti((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Di={key:0,class:"data elevation"},fi=["alt"],Pi={class:"data-values"},ki={key:1,class:"data altitude"},Li=Ti((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),bi={class:"data-values"};var Mi=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const n=e,t=(0,u.o)(),{user:r,workout:i,sport:l,useImperialUnits:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function E(e){return e&&null!==e.ascent&&null!==e.descent}return(e,n)=>{const t=(0,a.up)("router-link"),c=(0,a.up)("SportImage"),u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",pi,[(0,a._)("div",Ai,[(0,a._)("div",Oi,[(0,a._)("div",zi,[(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(t,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,s.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(t,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,s.SU)(i).workout_date&&(0,s.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,s.SU)(je.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(_i.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Ii)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:n[0]||(n[0]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("div",Ri,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(Si.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",gi,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,s.SU)(i)&&!(0,s.SU)(i).with_gpx}]),onClick:n[1]||(n[1]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",Ni,[(0,s.SU)(l).label?((0,a.wg)(),(0,a.j4)(c,{key:0,"sport-label":(0,s.SU)(l).label,color:(0,s.SU)(l).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Ui,[hi,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",vi,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ci,[wi,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).distance,digits:3,unitFrom:"km",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Di,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,fi),(0,a._)("div",Pi,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/ "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:1,distance:(0,s.SU)(i).max_alt,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),E((0,s.SU)(i))?((0,a.wg)(),(0,a.iD)("div",ki,[Li,(0,a._)("div",bi,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:0,distance:(0,s.SU)(i).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/- "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{key:1,distance:(0,s.SU)(i).descent,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const yi=(0,Y.Z)(Mi,[["__scopeId","data-v-645a9e33"]]);var Gi=yi,Fi=t(5630),Wi=t(3768);const Yi={id:"timeline"},Bi={class:"section-title"},xi={key:0},Ki={key:1},Hi={key:1,class:"more-workouts"};var $i=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:i}=(0,s.BK)(n),l=(0,s.iH)(1),d=5,m=n.user.nb_workouts>=d?d:n.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){t.dispatch(c.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}function T(){l.value+=1,t.dispatch(c.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Yi,[(0,a._)("div",Bi,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,s.SU)(i).nb_workouts>0&&0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",xi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,s.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Gi,{user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ki,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Gi,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((n=>n.id===e.sport_id))[0]:null,user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.j4)(Fi.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Hi,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const Zi=(0,Y.Z)($i,[["__scopeId","data-v-35567bf2"]]);var Vi=Zi,qi=t(1640),ji=t(4559),Xi=t(7349),Qi=t(1743),Ji=t(9160),es=t(1085);const ns=["title"];var ts=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const n=e,{displayHARecord:t,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(n);return(e,n)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:n[0]||(n[0]=n=>e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,s.SU)(o),title:(0,s.SU)(r).title,color:(0,s.SU)(i)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,s.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,s.SU)(r).records.filter((e=>!!(0,s.SU)(t)||"HA"!==e.record_type)).map((n=>` ${e.$t(`workouts.RECORD_${n.record_type}`)}`))},null,8,ns)):(0,a.kq)("",!0)])])}}});const rs=ts;var as=rs;const os={class:"donut-chart"},is={height:"34",width:"34",viewBox:"0 0 34 34"},ss=["stroke","stroke-dashoffset","transform"];var ls=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const n=e,{colors:t,datasets:r}=(0,s.BK)(n);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,n){return n-e*n}function m(e,n){const t=`rotate(${o}, ${i}, ${l})`;return o=360*n+o,t}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",os,[((0,a.wg)(),(0,a.iD)("svg",is,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,n)=>((0,a.wg)(),(0,a.iD)("g",{key:n},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(t)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(n,e[1].percentage)},null,8,ss)])))),128))]))]))}});const cs=ls;var us=cs;const ds={class:"calendar-workouts-chart"},ms={class:"workouts-count"},Es={key:0,class:"workouts-pane"},_s={class:"more-workouts"};var Ss=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const n=e,{colors:t,datasets:r,sports:i,workouts:l}=(0,s.BK)(n),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,n)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",ds,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",ms,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(us,{datasets:(0,s.SU)(r),colors:(0,s.SU)(t)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",Es,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",_s,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(l),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ts=(0,Y.Z)(Ss,[["__scopeId","data-v-52d4310a"]]);var ps=Ts;const As={class:"calendar-workouts"},Os={class:"desktop-display"},zs={key:0,class:"workouts-display"},Is={key:1,class:"donut-display"},Rs={class:"mobile-display"},gs={key:0,class:"donut-display"};var Ns=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const n=e,{displayHARecord:t,workouts:r,sports:o}=(0,s.BK)(n),i=(0,a.Fl)((()=>(0,Wi.BN)(n.workouts))),l=(0,a.Fl)((()=>(0,Te.Yx)(n.sports))),c=6;return(e,n)=>((0,a.wg)(),(0,a.iD)("div",As,[(0,a._)("div",Os,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",zs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,displayHARecord:(0,s.SU)(t),workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Is,[(0,a.Wm)(ps,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",Rs,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",gs,[(0,a.Wm)(ps,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Us=Ns;var hs=Us;const vs={class:"calendar-cells"},Cs={class:"calendar-cell-day"};var ws=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const n=e,{currentDay:t,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(n),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const n=[];for(let t=0;t<7;t++)n.push(e),e=(0,Xi.Z)(e,1);E.value.push(n)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,n){return n?n.filter((n=>(0,Qi.Z)((0,je.eB)(n.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>n.currentDay),(()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",vs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:n},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(Ji.Z)(e,(0,s.SU)(t)),"week-end":S(n),today:(0,s.SU)(es.Z)(e)}]),key:n},[(0,a.Wm)(hs,{workouts:T(e,(0,s.SU)(m)),sports:(0,s.SU)(l),displayHARecord:(0,s.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Cs,(0,o.zw)((0,s.SU)(At.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Ds=ws;var fs=Ds;const Ps={class:"calendar-days"};var ks=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const n=e,t=[];for(let r=0;r<7;r++)t.push((0,Xi.Z)(n.startDate,r));return(n,r)=>((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(t,((n,t)=>(0,a._)("div",{class:"calendar-day",key:t},(0,o.zw)((0,s.SU)(At.Z)(n,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Ls=ks;var bs=Ls;const Ms={class:"calendar-header"},ys=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Gs=[ys],Fs={class:"calendar-month"},Ws=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),Ys=[Ws];var Bs=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:n}){const t=e,{day:r,localeOptions:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ms,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:t[0]||(t[0]=e=>n("displayPreviousMonth"))},Gs),(0,a._)("div",Fs,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(At.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:t[1]||(t[1]=e=>n("displayNextMonth"))},Ys)]))}});const xs=Bs;var Ks=xs;const Hs={id:"user-calendar"},$s={class:"calendar-card box"};var Zs=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:o}=(0,s.BK)(n),i="yyyy-MM-dd",l=(0,s.iH)(new Date),d=(0,s.iH)((0,je.yx)(l.value,n.user.weekm)),m=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function _(){d.value=(0,je.yx)(l.value,n.user.weekm);const e={from:(0,At.Z)(d.value.start,i),to:(0,At.Z)(d.value.end,i),page:1,per_page:100,...Wi.eR};t.dispatch(c.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){l.value=(0,qi.Z)(l.value,1),_()}function T(){l.value=(0,ji.Z)(l.value,1),_()}return(0,a.wF)((()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",Hs,[(0,a._)("div",$s,[(0,a.Wm)(Ks,{day:l.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(bs,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(fs,{currentDay:l.value,displayHARecord:(0,s.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,s.SU)(r),"start-date":d.value.start,timezone:(0,s.SU)(o).timezone,workouts:(0,s.SU)(m),weekStartingMonday:(0,s.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const Vs=Zs;var qs=Vs,js=t(3703),Xs=t(4135),Qs=t(436);const Js={class:"user-month-stats"};var el=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const n=e,{sports:t,user:r}=(0,s.BK)(n),i=new Date,l={duration:"week",start:(0,js.Z)(i),end:(0,Xs.Z)(i)},c=n.sports.map((e=>e.id));return(e,n)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Js,[(0,a.Wm)(i,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Qs.Z,{sports:(0,s.SU)(t),user:(0,s.SU)(r),"chart-params":l,"displayed-sport-ids":(0,s.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const nl=(0,Y.Z)(el,[["__scopeId","data-v-1bcddc12"]]);var tl=nl,rl=t(2540),al=t(3649);const{locale:ol}=rl.Z.global,il=(e,n,t,r)=>{const a="km",o=t?al.Dl[a].defaultTarget:a,i="m",s=t?al.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,al.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,al.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,al.sC)(+e.value,i,s,2)} ${s}`;break;case"LD":l=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,je.p6)(e.workout_date,n,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},sl=(e,n)=>{const t=e.label.toLowerCase(),r=n.label.toLowerCase();return t>r?1:t(o=(0,je.mh)(o,ol.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=n.find((e=>e.id===a.sport_id));return i&&i.label&&(void 0===e[i.translatedLabel]&&(e[i.translatedLabel]={label:i.label,color:i.color,records:[]}),e[i.translatedLabel].records.push(il(a,t,r,o))),e}),{})),cl={class:"records-card"},ul={class:"record-type"},dl={class:"record-value"},ml={class:"record-date"};var El=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const n=e,{records:t,sportTranslatedLabel:r}=(0,s.BK)(n),{t:i}=(0,Se.QT)();function l(e){const n=[];return e.map((e=>{n.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),n.sort(sl)}return(e,n)=>{const i=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",cl,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(t).label,color:(0,s.SU)(t).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,s.SU)(t).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",ul,(0,o.zw)(e.label),1),(0,a._)("span",dl,(0,o.zw)(e.value),1),(0,a._)("span",ml,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const _l=(0,Y.Z)(El,[["__scopeId","data-v-8d17c606"]]);var Sl=_l;const Tl=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),pl={class:"user-records-section"},Al={class:"section-title"},Ol=Tl((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),zl={class:"user-records"},Il={key:0,class:"no-records"};var Rl=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),r=(0,a.Fl)((()=>ll(n.user.records,(0,Te.xH)(n.sports,t),n.user.timezone,n.user.imperial_units,n.user.display_ascent,n.user.date_format)));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",pl,[(0,a._)("div",Al,[Ol,(0,a.Uk)(" "+(0,o.zw)(n.$t("workouts.RECORD",2)),1)]),(0,a._)("div",zl,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Il,(0,o.zw)(n.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,s.SU)(r)).sort(),(n=>((0,a.wg)(),(0,a.j4)(Sl,{sportTranslatedLabel:n,records:(0,s.SU)(r)[n],key:n,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const gl=(0,Y.Z)(Rl,[["__scopeId","data-v-f0c85cb8"]]);var Nl=gl;const Ul={id:"user-stats"};var hl=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),{user:r}=(0,s.BK)(n),o=(0,a.Fl)((()=>n.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?al.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?al.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const n=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Ul,[(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"road",value:(0,s.SU)(u),text:"mi"===(0,s.SU)(c)?"miles":(0,s.SU)(c)},null,8,["value","text"]),(0,s.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(Q,{key:0,icon:"location-arrow",value:(0,s.SU)(E),text:"ft"===(0,s.SU)(m)?"feet":(0,s.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(Q,{icon:"clock-o",value:(0,s.SU)(i).days,text:(0,s.SU)(i).duration},null,8,["value","text"]),(0,s.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(Q,{key:1,icon:"tags",value:(0,s.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,s.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const vl=hl;var Cl=vl;const wl={class:"privacy-policy-message"};function Dl(e,n){const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",wl,[(0,a._)("span",null,[(0,a.Wm)(r,{keypath:"user.LAST_PRIVACY_POLICY_TO_VALIDATE"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:"/profile/edit/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.REVIEW")),1)])),_:1})])),_:1})])])}const fl={},Pl=(0,Y.Z)(fl,[["render",Dl],["__scopeId","data-v-05532ad6"]]);var kl=Pl;const Ll=e=>((0,a.dD)("data-v-4056e776"),e=e(),(0,a.Cn)(),e),bl={key:0,id:"dashboard",class:"view"},Ml={class:"container mobile-menu"},yl={class:"box"},Gl=Ll((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Fl=[Gl],Wl=Ll((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Yl=[Wl],Bl=Ll((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),xl=[Bl],Kl=Ll((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Hl=[Kl],$l={key:0,class:"container privacy-policy-message"},Zl={class:"container"},Vl={class:"container dashboard-container"},ql={class:"left-container dashboard-sub-container"},jl={class:"right-container dashboard-sub-container"},Xl=Ll((()=>(0,a._)("div",{id:"bottom"},null,-1))),Ql={key:1,class:"app-loading"};var Jl=(0,a.aZ)({__name:"Dashboard",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>n.getters[c.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function l(e){i.value=e}return(0,a.wF)((()=>n.dispatch(c.YN.ACTIONS.GET_USER_PROFILE))),(e,n)=>{const c=(0,a.up)("Loader");return(0,s.SU)(t).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bl,[(0,a._)("div",Ml,[(0,a._)("div",yl,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:n[0]||(n[0]=e=>l("calendar"))},Fl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:n[1]||(n[1]=e=>l("chart"))},Yl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:n[2]||(n[2]=e=>l("timeline"))},xl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:n[3]||(n[3]=e=>l("records"))},Hl,2)])]),(0,s.SU)(t).accepted_privacy_policy?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$l,[(0,a.Wm)(kl)])),(0,a._)("div",Zl,[(0,a.Wm)(Cl,{user:(0,s.SU)(t)},null,8,["user"])]),(0,a._)("div",Vl,[(0,a._)("div",ql,[(0,a.Wm)(tl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Nl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",jl,[(0,a.Wm)(qs,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Vi,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),Xl])):((0,a.wg)(),(0,a.iD)("div",Ql,[(0,a.Wm)(c)]))}}});const ec=(0,Y.Z)(Jl,[["__scopeId","data-v-4056e776"]]);var nc=ec,tc=t(8273);const rc={class:"not-found view"};var ac=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",rc,[(0,a.Wm)(tc.Z)]))}});const oc=ac;var ic=oc;const sc={id:"privacy-policy",class:"view"},lc={class:"container"},cc=(0,a._)("div",{id:"bottom"},null,-1);var uc=(0,a.aZ)({__name:"PrivacyPolicyView",setup(e){const n=(0,u.o)();return(0,a.wF)((()=>{n.dispatch(c.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",sc,[(0,a._)("div",lc,[(0,a.Wm)(Gr)]),cc]))}});const dc=uc;var mc=dc,Ec=t(776);const _c={id:"loginOrRegister",class:"view"},Sc={class:"container"},Tc={class:"container-sub"},pc={class:"container-sub"};var Ac=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const n=e,{action:t}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",_c,[(0,a._)("div",Sc,[(0,a._)("div",Tc,[(0,a.Wm)(ii)]),(0,a._)("div",pc,[(0,a.Wm)(Ec.Z,{action:(0,s.SU)(t)},null,8,["action"])])])]))}});const Oc=(0,Y.Z)(Ac,[["__scopeId","data-v-58043acb"]]);var zc=Oc;const Ic=e=>{const n=/(\/profile)(\/edit)*(\/*)/,t=e.replace(n,"").toUpperCase();return""===t?"PROFILE":t.toUpperCase()},Rc=[{path:"/",name:"Dashboard",component:nc},{path:"/login",name:"Login",component:zc,props:{action:"login"}},{path:"/register",name:"Register",component:zc,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>t.e(845).then(t.bind(t,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>t.e(845).then(t.bind(t,8793))},{path:"/profile",name:"Profile",component:()=>t.e(845).then(t.bind(t,1133)),children:[{path:"",name:"UserProfile",component:kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfos",component:Ln.Z},{path:"preferences",name:"UserPreferences",component:Wn},{path:"sports",name:"UserSportPreferences",component:Lo,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:La,children:[{path:"",name:"UserAppsList",component:ro},{path:":id",name:"UserApp",component:Va},{path:":id/created",name:"CreatedUserApp",component:Va,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Aa},{path:"authorize",name:"AuthorizeUserApp",component:Da}]}]},{path:"edit",name:"UserProfileEdition",component:Kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Mt},{path:"account",name:"UserAccountEdition",component:pt},{path:"picture",name:"UserPictureEdition",component:Vt},{path:"preferences",name:"UserPreferencesEdition",component:fr},{path:"sports",name:"UserSportPreferencesEdition",component:Lo,props:{isEdition:!0}},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Zr}]}]},{path:"/statistics",name:"Statistics",component:()=>t.e(193).then(t.bind(t,7885))},{path:"/users/:username",name:"User",component:()=>t.e(845).then(t.bind(t,9453))},{path:"/workouts",name:"Workouts",component:()=>t.e(401).then(t.bind(t,9628))},{path:"/workouts/:workoutId",name:"Workout",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>t.e(401).then(t.bind(t,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>t.e(401).then(t.bind(t,4189))},{path:"/admin",name:"Administration",component:()=>t.e(328).then(t.bind(t,6e3)),children:[{path:"",name:"AdministrationMenu",component:_e},{path:"application",name:"ApplicationAdministration",component:x},{path:"application/edit",name:"ApplicationAdministrationEdition",component:x,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:Fe},{path:"users/:username",name:"UserFromAdmin",component:()=>t.e(845).then(t.bind(t,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:In}]},{path:"/about",name:"About",component:Ei},{path:"/privacy-policy",name:"PrivacyPolicy",component:mc},{path:"/:pathMatch(.*)*",name:"not-found",component:ic}],gc=(0,r.p7)({history:(0,r.PO)("/"),routes:Rc}),Nc=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Uc=["/email-update","/about","/privacy-policy"];gc.beforeEach(((e,n,t)=>{bo.Z.dispatch(c.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Uc.includes(e.path))return t();if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]&&Nc.includes(e.path))return t("/");if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]||Nc.includes(e.path))t();else{const n="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};t(n)}})).catch((e=>{console.error(e),t()}))}));var hc=gc},5801:function(e,n,t){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,z;t.d(n,{YN:function(){return U},Km:function(){return h},SY:function(){return R},O8:function(){return g},gu:function(){return N},RT:function(){return v},aX:function(){return C}}),function(e){e["ACCEPT_PRIVACY_POLICY"]="ACCEPT_PRIVACY_POLICY",e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_REQUEST_DATA_EXPORT"]="GET_REQUEST_DATA_EXPORT",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["REQUEST_DATA_EXPORT"]="REQUEST_DATA_EXPORT",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING",e["EXPORT_REQUEST"]="EXPORT_REQUEST"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING",e["SET_EXPORT_REQUEST"]="SET_EXPORT_REQUEST"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(i||(i={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(s||(s={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_PRIVACY_POLICY"]="GET_APPLICATION_PRIVACY_POLICY",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_PRIVACY_POLICY"]="UPDATE_APPLICATION_PRIVACY_POLICY",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(E||(E={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(_||(_={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(S||(S={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(z||(z={}));var I=t(52);const R={ACTIONS:c,GETTERS:u,MUTATIONS:d},g={ACTIONS:m,GETTERS:E,MUTATIONS:_},N={ACTIONS:S,GETTERS:T,MUTATIONS:p},U={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},v={ACTIONS:A,GETTERS:O,MUTATIONS:z},C={ACTIONS:I.tW,GETTERS:I.JP,MUTATIONS:I.CW}},2894:function(e,n,t){"use strict";t.d(n,{Z:function(){return de}});var r=t(3907),a=(t(7658),t(5167)),o=t(6154),i=t(8566),s=t(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,i.a)(e);return i.j.set(t,n),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=t(1020),d=t(5801);const m=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${n.username}`).then((t=>{204===t.status?n.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},E={[d.RT.ACTIONS.EMPTY_USER](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USER,{})},[d.RT.ACTIONS.EMPTY_USERS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[d.RT.ACTIONS.GET_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${n}`).then((n=>{"success"===n.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0]):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,n.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const t={};void 0!==n.admin&&(t.admin=n.admin),n.resetPassword&&(t.reset_password=n.resetPassword),n.activate&&(t.activate=n.activate),void 0!==n.new_email&&(t.new_email=n.new_email),a.Z.patch(`users/${n.username}`,t).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]),(n.resetPassword||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(n.activate||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0])):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,n){m(e,{username:n.username,fromAdmin:!0})}},_=e=>{localStorage.removeItem("authToken"),e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),u.Z.push("/login")},S={[d.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&_(e)},[d.YN.ACTIONS.CONFIRM_ACCOUNT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:n.token}).then((n=>{if("success"===n.data.status){const t=n.data.auth_token;window.localStorage.setItem("authToken",t),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,t),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:n.token}).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),n.refreshUser&&e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile/edit/account"))),u.Z.push("/profile/edit/account")):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),n.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((n=>{"canceled"!==n.message&&((0,s.S)(e,n),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${n.actionType}`,n.formData).then((t=>{if("success"===t.data.status)if("login"===n.actionType){const r=t.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("string"===typeof n.redirectUrl?n.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((n=>{"success"===n.data.status?_(e):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${n}`).then((n=>{204===n.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",n).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!n.picture)throw new Error("No file part");const t=new FormData;t.append("file",n.picture),a.Z.post("auth/picture",t,{headers:{"content-type":"multipart/form-data"}}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,n){m(e,n)},[d.YN.ACTIONS.DELETE_PICTURE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((n=>{204===n.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",n).then((n=>{"success"===n.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.ACCEPT_PRIVACY_POLICY](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/privacy-policy",{accepted_policy:n}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/export/request").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/account/export").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[d.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[d.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[d.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[d.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[d.YN.GETTERS.USER_LOADING]:e=>e.loading},p={[d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[d.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,n){e.authToken=n},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,n){e.authUserProfile=n},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,n){e.isRegistrationSuccess=n},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,n){e.loading=n},[d.YN.MUTATIONS.SET_EXPORT_REQUEST](e,n){e.exportRequest=n}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null},O={state:A,actions:S,getters:T,mutations:p};var z=O;const I=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(n).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},R={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const t=new FormData;t.set("client_id",n.client_id),t.set("response_type",n.response_type),t.set("scope",n.scope),t.set("confirm","true"),n.state&&t.set("state",n.state),n.code_challenge&&t.set("code_challenge",n.code_challenge),n.code_challenge_method&&t.set("code_challenge_method",n.code_challenge_method),a.Z.post("oauth/authorize",t,{headers:{"Content-Type":"multipart/form-data"}}).then((n=>{200==n.status&&n.data.redirect_url?window.location.href=n.data.redirect_url:(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.CREATE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",n).then((n=>{"created"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client),u.Z.push(`/profile/apps/${n.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.DELETE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${n}`).then((n=>{204===n.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,n){I(e,`oauth/apps/${n}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,n){I(e,`oauth/apps/${n}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${n}/revoke`).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},g={[d.Km.GETTERS.CLIENT]:e=>e.client,[d.Km.GETTERS.CLIENTS]:e=>e.clients,[d.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[d.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},N={[d.Km.MUTATIONS.SET_CLIENT](e,n){e.client=n},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,n){e.clients=n},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,n){e.pagination=n},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,n){e.revocationSuccessful=n}},U={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:U,actions:R,getters:g,mutations:N};var v=h,C=t(2540);const{locale:w}=C.Z.global,D={[d.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[d.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",n).then((n=>{"success"===n.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,n){document.querySelector("html")?.setAttribute("lang",n),e.commit(d.SY.MUTATIONS.UPDATE_LANG,n),w.value=n}},f={[d.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[d.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[d.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[d.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[d.SY.GETTERS.LANGUAGE]:e=>e.language,[d.SY.GETTERS.LOCALE]:e=>e.locale};var P=t(6287);const k={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,n){e.errorMessages=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,n){e.application.config=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,n){e.appLoading=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,n){e.application.config.privacy_policy=n.privacy_policy,e.application.config.privacy_policy_date=n.privacy_policy_date},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,n){e.application.statistics=n},[d.SY.MUTATIONS.UPDATE_LANG](e,n){e.language=n,e.locale=P.v1[n]}};var L=t(5826);const b={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},M={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((n=>{"success"===n.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${n.id}`,{is_active:n.isActive}).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,n){e.sports=n}},F={sports:[]},W={state:F,actions:M,getters:y,mutations:G};var Y=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${n.username}/${n.filterType}`,{params:n.params}).then((n=>{"success"===n.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},x={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},K={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,n){e.statistics=n},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},H={statistics:{}},$={state:H,actions:B,getters:x,mutations:K};var Z=$;const V={[d.RT.GETTERS.USER]:e=>e.user,[d.RT.GETTERS.USERS]:e=>e.users,[d.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[d.RT.GETTERS.USERS_LOADING]:e=>e.loading,[d.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},q={[d.RT.MUTATIONS.UPDATE_USER](e,n){e.user=n},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,n){e.users=e.users.map((e=>e.username===n.username?n:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,n){e.users=n},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,n){e.loading=n},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,n){e.pagination=n},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var Q=X,J=t(52);const ee=(e,n,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.aX.MUTATIONS[t],n.data.data.workouts),t===J.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},ne={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,n){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,n,J.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,n){ee(e,n,J.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const t=n.segmentId?`/segment/${n.segmentId}`:"";a.Z.get(`workouts/${n.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(n.segmentId&&(0===o.segments.length||!o.segments[+n.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(d.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${n.workoutId}/chart_data${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,n.data.data.chart_data)})),a.Z.get(`workouts/${n.workoutId}/gpx${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,n.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((n=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${n.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${n.workoutId}`,n.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:n.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:n.workoutId}})}))})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!n.file)throw new Error("No file part");const t=n.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",n.file),r.append("data",`{"sport_id": ${n.sport_id}, "notes": "${t}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(1===n.data.data.workouts.length?`/workouts/${t.id}`:"/")}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",n).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(`/workouts/${t.id}`)}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},te={[d.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[d.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[d.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[d.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[d.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},re={[d.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=e.timeline_workouts.concat(n)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,n){e.calendar_workouts=n},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=n},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,n){e.user_workouts=n},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,n){e.pagination=n},[d.aX.MUTATIONS.SET_WORKOUT](e,n){e.workoutData.workout=n},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,n){e.workoutData.chartData=n},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,n){e.workoutData.gpx=n},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,n){e.workoutData.loading=n},[d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},ae={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},oe={state:ae,actions:ne,getters:te,mutations:re};var ie=oe;const se={authUserModule:z,oAuthModule:v,sportsModule:Y,statsModule:Z,usersModule:Q,workoutsModule:ie},le={state:b,actions:D,getters:f,mutations:k,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,n,t){"use strict";var r,a,o;t.d(n,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,n,t){"use strict";t.d(n,{o:function(){return a}});var r=t(3907);function a(){return(0,r.oR)()}},2766:function(e,n,t){"use strict";t.d(n,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return i}});const r=["asc","desc"],a=1,o=10,i=(e,n)=>e&&"string"===typeof e&&+e>0?+e:n,s=(e,n,t)=>e&&"string"===typeof e&&n.includes(e)?e:t,l=(e,n,t,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=i(e.page,a),d.per_page=i(e.per_page,o),d.order=s(e.order,r,u),d.order_by=s(e.order_by,n,t),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,n=1)=>Array.from({length:e-n+1},((e,t)=>n+t)),d=(e,n)=>{if(e<0)return[];if(e<9)return u(e);let t=[1,2];return n<4?t=t.concat([3,4,5]):n<6?t=t.concat(u(n+2,3)):(t=t.concat(["..."]),n=e-2&&t[t.length-1]{switch(e){case"week":return(0,r.Z)(n,{weekStartsOn:t?1:0});case"year":return(0,a.Z)(n);case"month":return(0,o.Z)(n);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,n)=>{switch(e){case"week":return(0,i.Z)(n,7);case"year":return(0,s.Z)(n,1);case"month":return(0,l.Z)(n,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,n)=>(0,m.Z)(new Date(e),n),O=(e,n)=>{const t=(0,o.Z)(e),a=(0,c.Z)(e),i=n?1:0;return{start:(0,r.Z)(t,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},z=(e,n=null,t=null)=>(n||(n="yyyy/MM/dd"),n=g(n,S.value),t||(t="HH:mm"),{workout_date:(0,d.Z)(e,n,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,t)}),I=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],R={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",it:"d MMM yyyy",nl:"d MMM yyyy"},g=(e,n)=>"date_string"===e?R[n]:e,N=(e,n,t,r=!0,a=null,o=!1)=>{a||(a=S.value);const i=r?o?" HH:mm:ss":" HH:mm":"";return(0,d.Z)(A(e,n),`${g(t,a)}${i}`,{locale:_.v1[a]})},U=(e,n,t=null)=>{const r=t||S.value,a=[];return I.map((t=>{const o=g(t,r);a.push({label:`${o} - ${N(e,n,o,!1,r)}`,value:t})})),a}},8966:function(e,n,t){"use strict";t.d(n,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,n=!0)=>{const t=Math.floor(Math.log(e)/Math.log(1024));if(!e)return n?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,t)).toFixed(1),o=r[t];return n?`${a}${o}`:{size:a,suffix:o}},o=e=>{const n=e/1048576;return+n.toFixed(2)}},2024:function(e,n,t){"use strict";t.d(n,{S:function(){return o},k:function(){return a}});var r=t(5801);const a=()=>"/api/",o=(e,n,t="UNKNOWN")=>{if(n&&"canceled"===n.message)return;const a=n?.response&&n.response.data?n.response.data:null;if(401===n?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=n?n.response?413===n.response.status?"file size is greater than the allowed size":a?.message?a.message:t:n.message?n.message:t:t;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${o}`)}},2335:function(e,n,t){"use strict";t.d(n,{O:function(){return i}});var r=t(9597),a=t(1036),o=t.n(a);const i=e=>o()((0,r.Z)(e,{target:"_blank"}),{allowedTags:["a"],disallowedTagsMode:"escape"})},6287:function(e,n,t){"use strict";t.d(n,{mT:function(){return m},v1:function(){return c},zK:function(){return u}});var r=t(879),a=t(5826),o=t(5830),i=t(8160),s=t(4638),l=t(2540);const c={de:r.Z,en:a.Z,fr:o.Z,it:i.Z,nl:s.Z},u={de:"Deutsch",en:"English",fr:"Français",it:"Italiano",nl:"Nederlands"},{availableLocales:d}=l.Z.global,m=d.map((e=>({label:u[e],value:e})))},631:function(e,n,t){"use strict";t.d(n,{CM:function(){return l},PA:function(){return s},Yx:function(){return a},Zo:function(){return r},xH:function(){return i}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Mountaineering:"#48b3b7",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const n={};return e.map((e=>n[e.id]=e.color?e.color:r[e.label])),n},o=(e,n)=>{const t=e.translatedLabel.toLowerCase(),r=n.translatedLabel.toLowerCase();return t>r?1:te.filter((e=>"all"===t||(r.includes(e.id)||e[t]))).map((e=>({...e,translatedLabel:n(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.label))[0],l=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,n,t){"use strict";t.d(n,{FN:function(){return D},aZ:function(){return w},v1:function(){return C}});t(7658);var r=t(6761),a=t(8148),o=t(9319),i=t(584),s=t(4559),l=t(3703),c=t(876),u=t(7090),d=t(4135),m=t(1593),E=t(7982),_=t(3500),S=t(1640),T=t(2540),p=t(6558),A=t(6287),O=t(631),z=t(3649);const{locale:I}=T.Z.global,R={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},g=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],N=(e,n)=>{const t=[];for(let r=(0,p.Nh)(e.duration,e.start,n);r<=e.end;r=(0,p.xA)(e.duration,r))t.push(r);return t},U=(e,n,t=!1)=>{const r={label:e,backgroundColor:[n],data:[]};return t&&(r.type="line",r.borderColor=[n],r.spanGaps=!0),r},h=e=>{const n={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const t=e.color?e.color:O.Zo[e.label];n.average_speed.push(U(e.label,t,!0)),n.nb_workouts.push(U(e.label,t)),n.total_distance.push(U(e.label,t)),n.total_duration.push(U(e.label,t)),n.total_ascent.push(U(e.label,t)),n.total_descent.push(U(e.label,t))})),n},v=(e,n,t)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,z.f3)(["average_speed","total_distance"].includes(e)?"km":"m",n,t);default:case"nb_workouts":case"total_duration":return n}},C=(e,n,t,a,o,i,s)=>{const l=N(e,n),c=R[e.duration],u=t.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((n=>{const t=(0,r.Z)(n,c.api),a=(0,r.Z)(n,"week"===e.duration?(0,p.mh)(s,I.value):c.chart,{locale:A.v1[I.value]});d.push(a),g.map((e=>{m[e].map((n=>{n.data.push(t in o&&E[n.label]in o[t]?v(e,o[t][E[n.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},w=(e,n,t)=>{const r=t?1:0,m="year"===n?(0,a.Z)((0,o.Z)(e,9)):"week"===n?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===n?(0,c.Z)(e):"week"===n?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:n,end:E,start:m}},D=(e,n,t)=>{const{duration:r,start:T,end:p}=e,A=t?1:0;return{duration:r,end:"year"===r?(0,c.Z)(n?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(n?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(n?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(n?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(n?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(n?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,n,t){"use strict";t.d(n,{Dl:function(){return r},Y2:function(){return l},f3:function(){return i},sC:function(){return o},x$:function(){return s}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,n,t,o=3)=>{const i=r[n],s=r[t],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,n,t)=>{const a=t?r[e].defaultTarget:e;return t?o(n,e,a,2):n},s=(e,n)=>{const t=n?1.8*e+32:e,r=n?" °F":"°C";return`${0===t?0:Number(t).toFixed(1)}${r}`},l=(e,n)=>{const t=n?2.2369363*e:e,r=n?" mph":"m/s";return`${0===t?0:Number(t).toFixed(1)}${r}`}},3768:function(e,n,t){"use strict";t.d(n,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});t(7658);var r=t(3649);const a=(e,n,t)=>{const a={speed:{label:n("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:n("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],i=[],s=[];return e.map((e=>{o.push(e.distance),i.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,t)),a.elevation.data.push((0,r.f3)("m",e.elevation,t)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const n=e.length;if(0===n)return{};const t={};return e.map((e=>{t[e.sport_id]||(t[e.sport_id]={count:0,percentage:0}),t[e.sport_id].count+=1,t[e.sport_id].percentage=t[e.sport_id].count/n})),t},i={order:"desc",order_by:"workout_date"}},2531:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,n){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",i,[(0,r.WI)(e.$slots,"content")])])}var l=t(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262);const i={class:"table-selects"},s=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var E=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:n}){const t=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(t),p=[10,25,50,100];function A(e){n("updateSelect",e.target.id,e.target.value)}return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(_).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${n.toUpperCase()}`)),9,l)))),128))],40,s)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(_).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(S),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${n.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(_).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),i=[o];function s(e,n,t,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=t(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,n,t){"use strict";t.d(n,{Z:function(){return _}});var r=t(6252),a=t(2262),o=(t(7658),t(3577));const i={id:"error"},s={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const n=e,{buttonText:t,title:l,message:c,path:u}=(0,a.BK)(n);return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",s,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:n[0]||(n[0]=n=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(t)),1)):(0,r.kq)("",!0)])]))}}),c=t(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const n=e,{target:t}=(0,a.BK)(n),o=(0,a.iH)(),i=(0,a.iH)(!1);function s(){o.value=setTimeout((()=>{i.value=!0}),500)}return(0,r.bv)((()=>s())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,n)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(t)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262),i=t(2766);const s=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=s((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=s((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var E=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const n=e,{pagination:t,path:s,query:E}=(0,o.BK)(n);function _(e,n){const t=Object.assign({},E.value);return t.page=n?e+n:e,t}return(e,n)=>{const E=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(t).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,-1)},disabled:!(0,o.SU)(t).has_prev},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(i.lM)((0,o.SU)(t).pages,(0,o.SU)(t).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(t).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(E,{key:1,class:"page-link",to:{path:(0,o.SU)(s),query:_(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(t).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,1)},disabled:!(0,o.SU)(t).has_next},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,n,t){"use strict";t.d(n,{Z:function(){return D}});var r=t(6252),a=t(2262),o=t(9963),i=t(3577),s=t(1423),l=t(5801),c=t(9917);const u=async e=>{switch(e){case"fr":return await t.e(222).then(t.bind(t,6947));case"de":return await t.e(940).then(t.bind(t,8056));case"it":return await t.e(802).then(t.bind(t,3140));default:return await t.e(261).then(t.bind(t,8288))}},d=async e=>{const n=await t.e(881).then(t.bind(t,410)),r=await u(e),a={graphs:n.default.adjacencyGraphs,dictionary:{...n.default.dictionary,...r.default.dictionary}};s.Mu.setOptions(a)},m=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},E={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},T={class:"password-strength-value"},p={key:0,class:"info-box"},A={class:"password-feedback"};var O=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const n=e,{password:t}=(0,a.BK)(n),o=(0,c.o)(),u=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),z=(0,a.iH)(0),I=(0,a.iH)(""),R=(0,a.iH)([]),g=(0,a.iH)("0% 100%");function N(e){const n=(0,s.tu)(e);z.value=n.score,I.value=m(z.value),R.value=n.feedback.suggestions,g.value=100*z.value/4+"% 100%"}return(0,r.wF)((async()=>await d(u.value))),(0,r.YP)((()=>u.value),(async e=>{await d(e)})),(0,r.YP)((()=>t.value),(async e=>{O.value?I.value="":N(e)})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",E,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${z.value}`]),style:(0,i.j5)({backgroundSize:g.value}),type:"range",value:z.value,min:"0",max:"4",step:"1"},null,14,_),I.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",T,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${I.value}`)),1),R.value.length>0?((0,r.wg)(),(0,r.iD)("div",p,[(0,r._)("ul",A,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(R.value,(n=>((0,r.wg)(),(0,r.iD)("li",{key:n},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${n}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),z=t(3744);const I=(0,z.Z)(O,[["__scopeId","data-v-74e71df5"]]);var R=I;const g=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),N={class:"password-input"},U=["id","disabled","placeholder","required","type"],h={key:0,class:"form-info"},v=g((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var C=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:n}){const t=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(t),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){n("updatePassword",e.target.value)}function p(){n("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",N,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:E.value?"text":"password","onUpdate:modelValue":n[0]||(n[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,U),[[o.YZ,_.value]]),(0,r._)("div",{class:"show-password",onClick:S},[(0,r.Uk)((0,i.zw)(e.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,i.C_)(["fa","fa-eye"+(E.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(s)?((0,r.wg)(),(0,r.iD)("div",h,[v,(0,r.Uk)(" "+(0,i.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(s)?((0,r.wg)(),(0,r.j4)(R,{key:1,password:_.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const w=(0,z.Z)(C,[["__scopeId","data-v-5a126514"]]);var D=w},2056:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577),o=t(2262),i=t(2024);const s=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const n=e,{displayHover:t}=(0,o.BK)(n),l=`${(0,i.k)()}workouts/map/${n.workout.map}`;return(e,n)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(t)}])},[(0,o.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),s],2))}});const c=l;var u=c},436:function(e,n,t){"use strict";t.d(n,{Z:function(){return y}});var r=t(6252),a=t(3577);const o={class:"start-chart"},i={key:0},s={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},E=["checked"],_={key:1},S=["checked"],T={key:2},p=["checked"];function A(e,n,t,A,O,z){const I=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",i,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:n[0]||(n[0]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:n[1]||(n[1]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:n[2]||(n[2]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:n[3]||(n[3]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",_,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:n[4]||(n[4]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,S),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:n[5]||(n[5]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(I,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=t(6761),z=t(2262);const I={class:"chart"};function R(e,n,t,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var g=t(6518),N=t(9150);const U=(e,n=!1)=>{let t="0";n&&(t=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return n?`${"0"===t?"":`${t}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=t(3649);const v=(e,n,t,r=!0,a="km")=>{const o=t?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${n.toFixed(2)} ${o}/h`;case"total_duration":return U(n,r);case"total_distance":case"total_ascent":case"total_descent":return`${n.toFixed(2)} ${o}`;default:return n.toString()}};var C=(0,r.aZ)({name:"Chart",components:{BarChart:g.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:n}=(0,N.QT)();function t(e){return isNaN(e)?0:+e}function a(e,n){return t(e)+t(n)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const i=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),s=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(n){return v(e.displayedData,+n,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(n){n.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(n){return"average_speed"===e.displayedData&&n.dataset.backgroundColor?n.dataset.backgroundColor[0]:"#666666"},rotation:function(n){return e.fullStats&&n.chart.chartArea.width<580?310:0},display:function(n){return!(e.fullStats&&n.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(n,t){if("average_speed"===e.displayedData)return v(e.displayedData,n,e.useImperialUnits,!1);{const n=t.chart.data.datasets.map((e=>e.data[t.dataIndex])).reduce(((e,n)=>a(e,n)),0);return t.datasetIndex===e.displayedSportIds.length-1&&n>0?v(e.displayedData,n,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(t){let r=n(`sports.${t.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==t.parsed.y&&(r+=v(e.displayedData,t.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(t){if("average_speed"===e.displayedData)return"";let r=0;return t.map((e=>{r+=e.parsed.y})),`${n("common.TOTAL")}: `+v(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,g.xZ)({chartData:i,options:s});return{barChartProps:l}}}),w=t(3744);const D=(0,w.Z)(C,[["render",R]]);var f=D,P=t(5801),k=t(9917),L=t(9318),b=(0,r.aZ)({name:"UserMonthStats",components:{Chart:f},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const n=(0,k.o)(),t=(0,z.iH)("total_distance"),a=(0,r.Fl)((()=>n.getters[P.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units,e.user.date_format)));function i(t){n.dispatch(P.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:t})}function s(e){t.value=e.target.name}function l(e,n){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(n.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async n=>{i(l(n,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[t.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:t,updateDisplayData:s}}});const M=(0,w.Z)(b,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=M},2179:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var r=t(6252),a=t(2262),o=t(3577),i=t(6595),s=t(5801),l=t(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},E={class:"user-stat"},_={class:"stat-number"},S={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},z={class:"stat-label"};var I=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const n=e,{user:t}=(0,a.BK)(n),I=(0,l.o)(),R=(0,r.Fl)((()=>I.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,n)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(t)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(t).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(t).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(t).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(t).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(R).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(R).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(t).nb_sports),1),(0,r._)("span",z,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(t).nb_sports)),1)])])])])}}}),R=t(3744);const g=(0,R.Z)(I,[["__scopeId","data-v-20291951"]]);var N=g},1585:function(e,n,t){"use strict";t.d(n,{Z:function(){return C}});t(7658);var r=t(6252),a=t(2262),o=t(3577),i=t(9963),s=t(6761),l=t(5801),c=t(9917),u=t(6558),d=t(6287);const m={id:"user-infos",class:"description-list"},E={key:1,class:"info-box success-message"},_={key:4,class:"email-form form-box"},S={class:"form-items",for:"email"},T={class:"form-items",for:"email"},p={class:"form-buttons"},A={class:"confirm",type:"submit"},O=["onClick"],z={key:5},I={class:"user-bio"},R={key:0,class:"profile-buttons"},g=["onClick"],N={key:1,class:"profile-buttons"};var U=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,c.o)(),{user:U,fromAdmin:h}=(0,a.BK)(n),v=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.LANGUAGE])),C=(0,r.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),w=(0,r.Fl)((()=>n.user.created_at?(0,u.p6)(n.user.created_at,C.value.timezone,C.value.date_format):"")),D=(0,r.Fl)((()=>n.user.birth_date?(0,s.Z)(new Date(n.user.birth_date),`${(0,u.mh)(C.value.date_format,v.value)}`,{locale:d.v1[v.value]}):"")),f=(0,r.Fl)((()=>t.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),P=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),b=(0,a.iH)(!1),M=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){t.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function Y(e){G.value="password-reset",t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function x(){$(),y.value=U.value.email_to_confirm?U.value.email_to_confirm:"",M.value=!0,G.value="email-update"}function K(){y.value="",M.value=!1}function H(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function $(){t.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>$())),(0,r.YP)((()=>f.value),(e=>{e&&(F(""),K())})),(e,n)=>{const t=(0,r.up)("Modal"),s=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",m,[L.value?((0,r.wg)(),(0,r.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===L.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(U).username,onConfirmAction:n[0]||(n[0]=e=>"delete"===L.value?W((0,a.SU)(U).username):Y((0,a.SU)(U).username)),onCancelAction:n[1]||(n[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((0,r.wg)(),(0,r.iD)("div",E,(0,o.zw)(e.$t(`admin.${"password-reset"===G.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(s,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(P)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(P)},null,8,["message"])):(0,r.kq)("",!0),M.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:b.value}),onSubmit:n[4]||(n[4]=(0,i.iM)((e=>H((0,a.SU)(U).username)),["prevent"]))},[(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":n[2]||(n[2]=e=>(0,a.SU)(U).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(U).email]])]),(0,r._)("label",T,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":n[3]||(n[3]=e=>y.value=e)},null,512),[[i.nr,y.value]])]),(0,r._)("div",p,[(0,r._)("button",A,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(w)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(D)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",I,(0,o.zw)((0,a.SU)(U).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",R,[(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:n[5]||(n[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:n[6]||(n[6]=(0,i.iM)((e=>B((0,a.SU)(U).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,g)):(0,r.kq)("",!0),(0,a.SU)(C).username!==(0,a.SU)(U).username&&(0,a.SU)(k).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:n[7]||(n[7]=(0,i.iM)((e=>F("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:n[8]||(n[8]=n=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("button",{onClick:n[9]||(n[9]=n=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:n[10]||(n[10]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=t(3744);const v=(0,h.Z)(U,[["__scopeId","data-v-217519af"]]);var C=v},776:function(e,n,t){"use strict";t.d(n,{Z:function(){return P}});var r=t(6252),a=t(3577),o=t(2262),i=t(9963),s=t(2201),l=t(8403),c=t(5801),u=t(9917);const d=e=>((0,r.dD)("data-v-4f112f24"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},E={key:2,class:"info-box success-message"},_={class:"form-items"},S=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},z=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={key:5,for:"accepted_policy",class:"accepted_policy"},R=["disabled"],g=["disabled"],N={key:3},U={key:0},h={key:4},v={class:"account"},C={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const n=e,t=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(n),D=(0,o.qj)({username:"",email:"",password:"",accepted_policy:!1}),f=(0,r.Fl)((()=>W(n.action))),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),L=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),b=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),M=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),y=(0,r.Fl)((()=>"register"===n.action&&!b.value.is_registration_enabled)),G=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(n.action)&&!b.value.is_email_sending_enabled)),F=(0,o.iH)(!1);function W(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${n.action.toUpperCase()}`}}function Y(){F.value=!0}function B(e){D.password=e}function x(e){switch(e){case"reset":return n.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:D.password,token:n.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:D.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:D.email});default:D["language"]=M.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:D,redirectUrl:t.query.from})}}function K(){D.username="",D.email="",D.password="",D.accepted_policy=!1}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>t.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),F.value=!1,K()})),(e,n)=>{const t=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("i18n-t"),u=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(y)}])},[(0,o.SU)(y)?((0,r.wg)(),(0,r.j4)(t,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(G)?((0,r.wg)(),(0,r.j4)(t,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(L)||(0,o.SU)(k)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(k)?"REGISTRATION"+((0,o.SU)(b).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:F.value}),onSubmit:n[3]||(n[3]=(0,i.iM)((e=>x((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",_,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(y),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:Y,"onUpdate:modelValue":n[0]||(n[0]=e=>D.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,D.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(y)||(0,o.SU)(G),required:"",onInvalid:Y,type:"email","onUpdate:modelValue":n[1]||(n[1]=e=>D.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,D.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[z,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(y),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:D.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:B,onPasswordError:Y},null,8,["disabled","placeholder","password","checkStrength"])),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("label",I,[(0,r.wy)((0,r._)("input",{type:"checkbox",id:"accepted_policy",disabled:(0,o.SU)(y),required:"",onInvalid:Y,"onUpdate:modelValue":n[2]||(n[2]=e=>D.accepted_policy=e)},null,40,R),[[i.e8,D.accepted_policy]]),(0,r._)("span",null,[(0,r.Wm)(c,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,r.w5)((()=>[(0,r.Wm)(s,{to:"/privacy-policy",target:"_blank"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})])])):(0,r.kq)("",!0)]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(y)||(0,o.SU)(G)},(0,a.zw)(e.$t((0,o.SU)(f))),9,g)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(0,r.Wm)(s,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(s,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",h,[(0,r._)("span",v,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(s,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",C,[(0,r.Wm)(s,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(P)?((0,r.wg)(),(0,r.j4)(u,{key:6,message:(0,o.SU)(P)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),D=t(3744);const f=(0,D.Z)(w,[["__scopeId","data-v-4f112f24"]]);var P=f},6595:function(e,n,t){"use strict";t.d(n,{Z:function(){return E}});var r=t(6252),a=t(2262),o=t(2024);const i={class:"user-picture"},s=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const n=e,t=(0,r.Fl)((()=>n.user.picture?`${(0,o.k)()}users/${n.user.username}/picture?${Date.now()}`:""));return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(t)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577);const o={class:"no-workouts box"};function i(e,n){const t=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(t,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=t(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,n,t){var r={"./de/de.ts":3010,"./en/en.ts":2709,"./fr/fr.ts":5479,"./it/it.ts":6013,"./nb/nb.ts":1901,"./nl/nl.ts":3726};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612},2868:function(){},4777:function(){},9830:function(){},209:function(){},7414:function(){}},n={};function t(r){var a=n[r];if(void 0!==a)return a.exports;var o=n[r]={exports:{}};return e[r].call(o.exports,o,o.exports,t),o.exports}t.m=e,function(){var e=[];t.O=function(n,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(t.O).every((function(e){return t.O[e](r[l])}))?r.splice(l--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){var e,n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};t.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);t.r(o);var i={};e=e||[null,n({}),n([]),n(n)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},t.d(o,i),o}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"static/js/"+({24:"reset",193:"statistics",222:"password.fr",261:"password.en",328:"admin",401:"workouts",802:"password.it",845:"profile",881:"password",940:"password.de"}[e]||e)+"."+{24:"572eac46",93:"37abd50d",193:"d3c3c7bd",222:"1d179591",243:"d72fe9e5",261:"b4ea7085",328:"4313b7d9",401:"0fd5b207",431:"386df171",633:"23ee7aff",802:"be465eec",845:"98e985f4",858:"922b6a43",881:"c0f2f8e4",940:"b81f881f"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"c2966dd5",845:"9f83730d"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="fittrackee_client:";t.l=function(r,a,o,i){if(e[r])e[r].push(a);else{var s,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled' && error.response) {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nconst disabledLanguages = ['nb'] // to update after translations release\n\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (\n matched &&\n matched.length > 1 &&\n !disabledLanguages.includes(matched[1])\n ) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über diese Instanz\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellcode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wetterdaten von:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detaillierte Instanz-Informationen\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein Text eingegeben\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum vollständigen Export existiert bereits.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum Datenexport existiert bereits.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Anzahl der Dateien im Archiv überschreitet die Begrenzung.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten-Export anfragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine neue OAuth2-Anwendung hinzufügen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ID\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheimnis\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsbeschreibung\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erstellt am\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsname\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiterleitungs-URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geltungsbereich\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf auth-Endpunkte\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf users-Endpunkte\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf users-Endpunkte\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf workouts-Endpunkte\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf workouts-Endpunkte\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist sicher, dass du diese App löschen willst?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Anwendung \", _interpolate(_list(0)), \" fragt an:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" den Zugriff auf deinen Account erlauben?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Zwischenablage kopieren\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung löschen\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung hinzufügen\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung wurde nicht gefunden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Anwendungen\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Beschreibung\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Tokens zurückrufen\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du alle Tokens zurückrufen möchtest?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle vorhandenen und vergebenen Tokens wurde zurückgerufen.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account löschen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\\n\\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Änderungen unserer Datenschutzrichtlinie\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden gesammelt:\\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\\n- Technische Informationen (Browser und Betriebssystem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welche Informationen sammeln wir?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\\n\\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\\n\\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\\n\\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geben wir Informationen an Außenstehende weiter?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wie schützen wir deinen Informationen?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Für was verwenden wir deine Informationen?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\\n\\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\\n\\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seitennutzung durch Kinder\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deine Zustimmung\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letztes Update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Virtuell)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergsteigen\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenexport\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archiv herunterladen\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generiere Link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst alle 24 Stunden ein Archiv anfragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fehlgeschlagen (bitte frage einen anderen Export an)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Arbeit...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ich möchte meinen Account löschen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Datenschutzrichtlinie wurde aktualisiert, bitte \", _interpolate(_list(0)), \" sie vor dem Fortfahren.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datumsanzeigeformat\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ich habe die \", _interpolate(_list(0)), \" gelesen und stimme ihr zu.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"überprüfen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Du hast die \", _interpolate(_list(0)), \" akzeptiert.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Distanz muss größer als 0 sein\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Dauer muss größer als 0 Sekunden sein\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About this instance\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weather data from:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any additional information that may be useful to your users. Markdown syntax can be used.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed instance information\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No text entered\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least one file in zip archive exceeds size limit, please check the archive.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A completed export request already exists.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A data export request already exists.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The number of files in the archive exceeds the limit.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request data export\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request the deletion of your account at any time by going to this address (after logging in) and clicking on \\\"Delete My Account\\\" button in your account edition.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account deletion\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If we decide to change our privacy policy, we will post those changes on this page.\\n\\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changes to our Privacy Policy\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information are collected:\\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\\n- Technical information (browser name and operating system).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What information do we collect?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\\n\\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \\n\\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\\n\\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do we disclose any information to outside parties?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"How do we protect your information?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\\n- The email address you provide may be used to send you information or confirm your account modifications.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What do we use your information for?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\\n\\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\\n\\nLaw requirements can be different if this server is in another jurisdiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Site usage by children\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"By using our site, you consent to our web site privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your Consent\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Virtual)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountaineering\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generating link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request an archive by 24 hours\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"errored (please request another export)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in progres...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I want to delete my account\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The privacy policy has been updated, please \", _interpolate(_list(0)), \" it before proceeding.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date display format\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy policy\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"I have read and agree to the \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"review\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"You have accepted the \", _interpolate(_list(0)), \".\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Both elevation values must be provided and be greater than or equal to 0.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The distance must be greater than 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The duration must be greater than 0 seconds\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A propos de cette instance\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source des données météo :\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information détaillée de l'instance\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de texte saisi\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export terminée existe déjà.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export de données est en cours\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le nombre de fichiers de l'archive dépasse la limite.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Demander un export de données\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous \\\"Supprimer mon compte\\\" dans l'espace de mise à jour de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Suppression du compte\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\\n\\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifications de notre politique de confidentialité\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les informations suivantes sont collectées :\\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\\n- Données techniques (nom du navigateur et du système d'exploitation).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quelles sont les informations que nous recueillons ?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\\n\\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\\n\\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\\n\\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Divulguons-nous des informations à des tiers ?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment protégeons-nous vos informations ?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment utilisons-nous vos informations ?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\\n\\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\\n\\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Protection des mineurs\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En utilisant notre site, vous acceptez la politique de confidentialité de notre site web.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre consentement\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dernière mise à jour\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Virtuel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinisme\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export des données\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Télécharger l'archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lien en cours de génération...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander un export par 24h\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en erreur (veuillez demander une nouvelle archive)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en cours...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je souhaite supprimer mon compte\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La politique de confidentialité a été mise à jour. Veuillez l'\", _interpolate(_list(0)), \" avant de poursuivre.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Format d'affichage de la date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politique de confidentialité\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"J'ai lu et accepte la \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"accepter\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Vous avez accepté la \", _interpolate(_list(0)), \".\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distance doit être supérieure à 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durée doit être supérieure à 0 secondes\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contatta l'amministratore\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee è un tracker self-hosted per attività outdoor.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sotto licenza \", _interpolate(_list(0)), \" \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Codice sorgente\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Azione\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi/rimuovi permessi, elimina account utente.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email di contatto dell'amministratore\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di files zip\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se settato a 0, non ci sono limiti per le registrazioni.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di utenti attivi\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna mail di contatto\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dei file caricabili (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurazione applicazione\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dell'archivio zip (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna ad amministrazione\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler eliminare \", _interpolate(_list(0)), \" account? Tutti i dati verranno persi, quest'azione non può essere annullata.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler resettare \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email corrente\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina utente\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'invio di email è disabilitato.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva/Disattiva sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La password è stata reimpostata.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento disabilitata.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento abilitata.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout esistono\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Immagine\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etichetta\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione sport\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna configurazione applicazione.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utente\"]), _normalize([\"utenti\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato admin\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data di registrazione\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato account\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nome utente\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"numero di workout\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi permessi di amministratore\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi permessi di amministratore\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'indirizzo email è stato aggiornato.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore di rete.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amminstratore.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: dev'essere inserita un'email valida.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura del file gpx.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'elaborazione del file gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura della configurazione.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'aggiornamento della configurazione\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, per favore riprova o contatta l'amministratore.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, la registrazione è disabilitata.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File con estensione non permessa.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dimensione del file è maggiore di quella massima permessa.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Credenziali errate.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I dati inseriti non sono validi.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nuova email dev'essere diversa dalla vecchia mail\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: la password inserita e la conferma non combaciano.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insersci un token di autenticazione valido.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto. Per favore ripeti il log in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, quell'username è già esistente.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo sport non esiste.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrato con successo.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il numero di files nell'archivio supera il limite massimo permesso.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utente non esiste.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dev'essere inserita un'email valida\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai i permessi necessari.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avanti\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"precedente\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorizza\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Indietro\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annulla\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta filtri\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina il mio account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disattiva\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invia\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conferma\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contatto\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"giorno\"]), _normalize([\"giorni\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mostrato\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentazione\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"qui\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nascosto\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più basso al più alto\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più alto al più basso\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina per\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totale\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo mese\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina non trovata\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout non trovato\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Qualcosa è andato storto\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amministratore.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi una nuova applicazione OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Descrizione applicazione\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome applicazione\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL redirect\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura alla configurazioen dell'applicazione.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a usersendpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL applicazione\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazioni OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare quest'app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'applicazione \", _interpolate(_list(0)), \" sta chiedendo:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autorizzi \", _interpolate(_list(0)), \" ad utilizzare il tuo account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copia nella clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina applicazione\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi applicazione\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione non trovata!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna applicazione\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna descrizione\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi tutti i tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler rimuovere tutti i token?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutti i token esistenti associati sono stati rimossi.\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Trasporto)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cicliscmo (Virtuale)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Escursioni\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Elettrica)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinismo\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Canottaggio\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Corsa\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Alpino)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Racchette da neve\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sentieri\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Camminata\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiche\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mese\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"settimana\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"anno\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai ricevuto istruzioni?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hai già un account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password corrente\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci un indirizzo email valido.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci una password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra per username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token invalido, per favore richiedi un nuovo reset della password.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun utente trovato.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password dimenticata?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci almeno 8 caratteri.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"media\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"buona\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sicurezza password\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci qualche maiuscola.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi più parole che sono meno comuni.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci maiuscole oltre alla prima lettera.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sostituzioni prevedibili, per esempio, \", \"@\", \" per la a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa patterns più lunghi e cambia direzione di scrittura più volte.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"È consigliabile cambiare questa password se è utilizzata per altro.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date recenti.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di ripetere lettere e parole.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di scrivere parole al contrario.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sequenze di caratteri comuni.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa più parole, ma evita frasi comuni.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bassa\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La tua password è stata aggiornata. Clicca \", _interpolate(_list(0)), \" per effettuare il login.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tipo di account\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dati relativi alle salite (singoli, totale)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna al profilo\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di nascita\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Formato data\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica profilo\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze sport\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Per favore \", _interpolate(_list(0)), \" per cambiare di nuovo la tua mail o contatta l'amministratore\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primo giorno della settimana\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cognome\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posizione\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lunedì\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi foto\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna foto\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di registrazione\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"azione\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"colore\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disattivato dall'amministratore\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"attivo\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"etichetta\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limite minimo di velocità\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze sport\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato creato con successo.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un link per attivare il tuo account è stato inviato all'indirizzo specificato.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domenica\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferenze\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profilo\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema imperiale (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unità per la distanza\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema metrico (m, km, m/s, °C)\"])}\n }\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, la registrazione è disabilitata.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma dell'account\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo account è inattivo.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo \\\"_\\\".\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto profilo\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi un workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analisi\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"salita\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità media\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vel. media\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ritorna al workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"discesa\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra filtri\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distanza\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica il workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevazione\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fine\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi filtri\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distanza dev'essere maggiore di 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durata dev'essere maggiore di 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ultimi workout\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica più workout\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine massima\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file massimi\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dimensione massima\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità massima\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine minima\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prossimo workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"note\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data dal file gpx, senza \\\"pulizia\\\"\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna cartella all'interno\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna mappa\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout successivo\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna nota\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento precedente\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout precedente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun record.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pause\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segmento precedente\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout precedente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. media\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distanza più lunga\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salita più alta\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durata più lunga\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. massima\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"caratteri rimanenti\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segmento\"]), _normalize([\"segmenti\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inizio\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inizio e fine\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partenza asse elevazione a 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titolo\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica file!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cielo chiaro\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte chiara\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuvoloso\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nebbia\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"parzialmente nuvoloso\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte parzialmente nuvolosa\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pioggia\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nevischio\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neve\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"umidità\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatura\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"senza file .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"con file .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data workout\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare questo workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"o file .zip contenente files .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Over deze instantie\"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacteer uw administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is zelf-gehoste activiteiten tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weer gegevens van:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gedetailleerde informatie over deze instantie\"])}\n },\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actie\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activeer account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email voor contact\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie configureren\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van zip archief (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u de account \", _interpolate(_list(0)), \" wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u het wachtwoord voor \", _interpolate(_list(0)), \" wilt resetten?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidige email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emails verzenden is uitgeschakeld.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aan- of uitzetten van sporten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe email\"])},\n \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen tekst ingegeven\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel uitgeschakeld.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel ingeschakeld.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset wachtwoord\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"gebruiker\"]), _normalize([\"gebruikers\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie datum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersnaam\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aantal trainingen\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin rechten toevoegen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder admin rechten\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren.\"])},\n \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een voltooide export aanvraag.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij ophalen van configuratie.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het updaten van de configuratie\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, probeer opnieuw of contacteer de administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, registratie is uitgeschakeld.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsformaat niet toegelaten.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige inloggegevens.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingegeven data is ongeldig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het nieuwe email adres dient te verschillen van het oude\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand geselecteerd.\"])},\n \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een export aanvraag.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord: het wachtwoord en de bevestiging komen niet overeen.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig auth token.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, deze gebruikersnaam is al in gebruik.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze sport bestaat niet.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het aantal bestanden in het zip archief overschrijdt de limiet.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruiker bestaat niet.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een geldige email is vereist voor admin contact informatie\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U hebt geen machtigingen.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Herzend bevestigings email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toekennen\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuleren\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder mijn account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bewerken\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanzetten\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export aanvragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opslaan\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contacteer\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"dag\"]), _normalize([\"dagen\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer op\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totaal\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze maand\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina niet gevonden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training niet gevonden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er ging iets mis\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Doorverwijs URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Omvang\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze app wilt verwijderen?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"De app \", _interpolate(_list(0)), \" vraagt:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Toegang geven aan \", _interpolate(_list(0)), \" tot uw gebruikersaccount?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kopieer naar klembord\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder app\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg een app toe\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App niet gevonden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen apps\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen beschrijving\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder alle tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u alle tokens wilt intrekken?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle bestaande tokens werden ingetrokken.\"])}\n}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop \\\"Verwijder mijn account\\\" te klikken in uw instellingen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account verwijderen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\\n\\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassingen aan ons Privacybeleid\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De volgende informatie wordt verzameld:\\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\\n- Technische informatie (de browsernaam en naam van het besturingssysteem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welke informatie wordt er door ons verzameld?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\\n\\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\\n\\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\\n\\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordt er informatie met derden gedeeld?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoe beschermen we uw informatie?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waarvoor wordt de opgegeven informatie gebruikt?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\\n\\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\\n\\nWetgeving kan verschillen als de server zich op een andere plaats bevindt.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik door minderjarigen\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Door deze site te gebruiken, gaat u akkoord met ons privacybeleid.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw toestemming\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste aanpassing\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacybeleid\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Virtueel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (Elektrisch)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergbeklimmen\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roeien\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lopen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sneeuwschoenen\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jaar\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen instructies ontvangen?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Al een account aangemaakt?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden.\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidig wachtwoord\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig email adres op.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een paswoord in\"])},\n \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data exporteren\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archief downloaden\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"link aanmaken...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je kan 1 keer per 24h een archief aanvragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fout (gelieve een nieuw archief aan te vragen)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bezig met verwerken...\"])}\n }\n },\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter op gebruikersnaam\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg wachtwoord\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldig token, vraag een nieuwe wachtwoord reset aan.\"])},\n \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ik wil mijn account verwijderen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Het privacybeleid werd aangepast, gelieve te \", _interpolate(_list(0)), \" voor verdergaan.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuw wachtwoord\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen gebruikers gevonden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik niet enkel voor de eerste letter een hoofdletter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd persoonlijke gegevens en jaartallen.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Uw wachtwoord werd aangepast. Klik \", _interpolate(_list(0)), \" om in te loggen.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar profiel\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geboortedatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergaveformaat datum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren wijzigen\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren wijzigen\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Gelieve \", _interpolate(_list(0)), \" om uw email adres opnieuw te wijzigen of contacteer uw administrator\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Achternaam\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Locatie\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maandag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding aanpassen\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum registratie\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actie\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"uitgeschakeld door admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actief\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheidsgrens voor stilstand\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol aangemaakt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zondag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afbeelding\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voorkeuren\"])},\n \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ik heb het \", _interpolate(_list(0)), \" gelezen en goedgekeurd.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registreren is uitgeschakeld.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"beoordeling\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon wachtwoord\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze account is niet actief.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \\\"_\\\" zijn toegestaan.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"U hebt het \", _interpolate(_list(0)), \" aanvaard.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. snelheid\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedaald\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afstand\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duur\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training aanpassen\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hoogte\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"einde\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"van\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx bestand\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg filters\"])},\n \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste trainingen\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toon meer trainingen\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. hoogte\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. aantal bestanden\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. grootte\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. snelheid\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. hoogte\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Volgende training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen map aanwezig\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen kaart\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgende training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen notities\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorig segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorige training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauzes\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorig segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorige training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogst geklommen\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste duur\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. snelheid\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"resterende karakters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segmenten\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheid\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sporten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zet hoogte-as vast op 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aan\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"totale duur\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eén uploaden!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere dag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bewolkt\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mist\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte dag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"natte sneeuw\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sneeuw\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vochtigheid\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatuur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze training wilt verwijderen?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip bestand\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"of .zip archief met .gpx bestanden\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport PrivacyPolicyTranslations from './privacy_policy.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-97e20d3a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n };\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=97e20d3a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-97e20d3a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ab6e62ae\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=ab6e62ae&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ab6e62ae\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb7fa534\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLength\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null };\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLength: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=eb7fa534&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eb7fa534\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment } from \"vue\"\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean };\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _createTextVNode(\" \" + _toDisplayString(' ') + \" \"),\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9590c0e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n };\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=9590c0e6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9590c0e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingVirtual.vue?vue&type=template&id=ec8f7bb6\"\nimport script from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Mountaineering.vue?vue&type=template&id=15731a2a\"\nimport script from \"./Mountaineering.vue?vue&type=script&lang=js\"\nexport * from \"./Mountaineering.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import CyclingVirtual from '@/components/Common/Images/SportImage/CyclingVirtual.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Mountaineering from '@/components/Common/Images/SportImage/Mountaineering.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string };\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Virtual)')\n ? (_openBlock(), _createBlock(CyclingVirtual, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountaineering')\n ? (_openBlock(), _createBlock(Mountaineering, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 12 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 13 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5aa8db48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null };\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=5aa8db48&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5aa8db48\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-80b4a9e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n class: \"about-label\",\n for: \"about\"\n}\nconst _hoisted_18 = { class: \"textarea-description\" }\nconst _hoisted_19 = [\"innerHTML\"]\nconst _hoisted_20 = {\n class: \"privacy-policy-label\",\n for: \"privacy_policy\"\n}\nconst _hoisted_21 = { class: \"textarea-description\" }\nconst _hoisted_22 = [\"innerHTML\"]\nconst _hoisted_23 = {\n key: 5,\n class: \"form-buttons\"\n}\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = {\n key: 6,\n class: \"form-buttons\"\n}\n\nimport snarkdown from 'snarkdown'\n import {\n ComputedRef,\n capitalize,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean };\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n about: '',\n privacy_policy: '',\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : ['about', 'privacy_policy'].includes(key)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ? appData[key] = appConfig[key]!== null\n ? appConfig[key]\n : ''\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n : (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('admin.ABOUT.TEXT')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('admin.ABOUT.DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 0,\n id: \"about\",\n name: \"about\",\n rows: \"10\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((appData.about) = $event))\n }, null, 512)), [\n [_vModelText, appData.about]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.about ? appData.about : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_19)),\n _createElementVNode(\"label\", _hoisted_20, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('admin.PRIVACY_POLICY_DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 2,\n id: \"privacy_policy\",\n name: \"privacy_policy\",\n rows: \"20\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((appData.privacy_policy) = $event))\n }, null, 512)), [\n [_vModelText, appData.privacy_policy]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.privacy_policy ? appData.privacy_policy : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_22)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 4,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=80b4a9e6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-80b4a9e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n };\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n };\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics };\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dc12ff78\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n user.created_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=dc12ff78&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dc12ff78\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean };\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n case 'PRIVACY-POLICY':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=205359d6&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed, ComputedRef } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateFormat } from '@/utils/dates'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const appLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const userLanguage = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const date_format = computed(() =>\n props.user.date_format ? props.user.date_format : 'MM/dd/yyyy'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(userLanguage)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(getDateFormat)(_unref(date_format), _unref(appLanguage))), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS', 'PRIVACY-POLICY']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6e11106c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"data-export\" }\nconst _hoisted_13 = { class: \"info-box\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = {\n key: 0,\n class: \"data-export-archive\"\n}\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-spinner fa-pulse\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { isBefore, subDays } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import authApi from \"@/api/authApi\";\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import {IAuthUserProfile, IUserAccountPayload, IExportRequest} from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n const exportRequest: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]\n )\n const exportRequestDate: ComputedRef = computed(\n () => getExportRequestDate()\n )\n const generatingLink: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT)\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IAuthUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function getExportRequestDate() {\n return exportRequest.value ? formatDate(\n exportRequest.value.created_at,\n user.value.timezone,\n user.value.date_format,\n true,\n null, true\n ) : null\n }\n\n function canRequestExport() {\n return exportRequestDate.value\n ? isBefore(new Date(exportRequestDate.value), subDays(new Date(), 1))\n : true\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n function requestExport() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT)\n }\n async function downloadArchive(filename: string) {\n generatingLink.value = true\n await authApi\n .get(`/auth/account/export/${filename}`, {\n responseType: 'blob',\n })\n .then((response) => {\n const archiveFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/zip' })\n )\n const archive_link = document.createElement('a')\n archive_link.href = archiveFileUrl\n archive_link.setAttribute('download', filename)\n document.body.appendChild(archive_link)\n archive_link.click()\n })\n .finally(() => generatingLink.value = false)\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1),\n (canRequestExport())\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _withModifiers(requestExport, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.REQUEST_DATA_EXPORT')), 9, _hoisted_11))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY')), 1)\n ]),\n (_unref(exportRequest))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EXPORT_REQUEST.DATA_EXPORT')) + \" (\" + _toDisplayString(_unref(exportRequestDate)) + \"): \", 1),\n (_unref(exportRequest).status=== 'successful')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"archive-link\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (downloadArchive(_unref(exportRequest).file_name)), [\"prevent\"]))\n }, [\n _hoisted_16,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE\")) + \" (\" + _toDisplayString(_unref(getReadableFileSize)(_unref(exportRequest).file_size)) + \") \", 1)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.STATUS.${_unref(exportRequest).status}`)), 1)),\n (generatingLink.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.GENERATING_LINK`)) + \" \", 1),\n _hoisted_19\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=6e11106c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6e11106c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e5a4552\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n props.user.timezone,\n props.user.date_format\n )\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=5e5a4552&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e5a4552\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean };\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b8a9a12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_12 = { class: \"checkboxes-label\" }\nconst _hoisted_13 = { class: \"checkboxes\" }\nconst _hoisted_14 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_15 = { class: \"checkbox-label\" }\nconst _hoisted_16 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_17 = { class: \"checkboxes-label\" }\nconst _hoisted_18 = { class: \"checkboxes\" }\nconst _hoisted_19 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_20 = { class: \"checkbox-label\" }\nconst _hoisted_21 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_22 = { class: \"checkboxes-label\" }\nconst _hoisted_23 = { class: \"checkboxes\" }\nconst _hoisted_24 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_25 = { class: \"checkbox-label\" }\nconst _hoisted_26 = { class: \"form-buttons\" }\nconst _hoisted_27 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableDateFormatOptions } from '@/utils/dates'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n date_format: 'dd/MM/yyyy',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const dateFormatOptions = computed(() =>\n availableDateFormatOptions(\n new Date().toUTCString(),\n props.user.timezone,\n userForm.language\n )\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.date_format = user.date_format ? user.date_format : 'dd/MM/yyyy'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"date_format\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.date_format) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dateFormatOptions), (dateFormat) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: dateFormat.value,\n key: dateFormat.value\n }, _toDisplayString(dateFormat.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, userForm.date_format]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_14),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_18, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_19),\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_23, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_24),\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", _hoisted_27, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=3b8a9a12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b8a9a12\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c1693aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"privacy-policy-text\" }\nconst _hoisted_2 = { class: \"last-update\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, capitalize, computed } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { dateStringFormats, formatDate } from '@/utils/dates'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicy',\n setup(__props) {\n\n const store = useStore()\n const fittrackee_private_policy_date = 'Sun, 26 Feb 2023 17:00:00 GMT'\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const dateFormat = computed(() => getDateFormat())\n const timezone = computed(() => getTimezone())\n const private_policy_date = computed(() => getPolicyDate())\n const paragraphs = [\n 'DATA_COLLECTED', 'INFORMATION_USAGE', 'INFORMATION_PROTECTION',\n 'INFORMATION_DISCLOSURE', 'SITE_USAGE_BY_CHILDREN', 'YOUR_CONSENT',\n 'ACCOUNT_DELETION', 'CHANGES_TO_OUR_PRIVACY_POLICY'\n ]\n\n function getTimezone() {\n return authUser.value.timezone\n ? authUser.value.timezone\n : Intl.DateTimeFormat().resolvedOptions().timeZone\n ? Intl.DateTimeFormat().resolvedOptions().timeZone\n : 'Europe/Paris'\n }\n function getDateFormat() {\n return dateStringFormats[language.value]\n }\n function getPolicyDate() {\n return formatDate(\n appConfig.value.privacy_policy && appConfig.value.privacy_policy_date\n ? `${appConfig.value.privacy_policy_date}`\n : fittrackee_private_policy_date,\n timezone.value,\n dateFormat.value,\n false,\n )\n }\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", null, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('privacy_policy.LAST_UPDATE')) + \": \" + _toDisplayString(_unref(private_policy_date)), 1),\n (_unref(appConfig).privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).privacy_policy))\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, _renderList(paragraphs, (paragraph) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: paragraph }, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.TITLE`)), 1),\n _createElementVNode(\"p\", {\n innerHTML: _unref(snarkdown)(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.CONTENT`))\n }, null, 8, _hoisted_4)\n ], 64))\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PrivacyPolicy.vue?vue&type=style&index=0&id=0c1693aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0c1693aa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77e04be\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-privacy-policy\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = { class: \"policy-content\" }\nconst _hoisted_4 = {\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_5 = { class: \"form-buttons\" }\nconst _hoisted_6 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, ref, onUnmounted, toRefs } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import {AUTH_USER_STORE, ROOT_STORE} from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPrivacyPolicyValidation',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const acceptedPolicy= ref(false)\n\n function onSubmit() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY, acceptedPolicy.value\n )\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(user).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"form\", {\n key: 2,\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit()), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PrivacyPolicy)\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((acceptedPolicy).value = $event))\n }, null, 512), [\n [_vModelCheckbox, acceptedPolicy.value]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ]),\n _createVNode(_component_router_link, { to: \"/profile/edit/account\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.I_WANT_TO_DELETE_MY_ACCOUNT')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", _hoisted_6, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32))\n ]))\n}\n}\n\n})","import script from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPrivacyPolicyValidation.vue?vue&type=style&index=0&id=c77e04be&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c77e04be\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a844fa2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean };\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(formatDate)(\n _unref(client).issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=3a844fa2&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a844fa2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efa45ea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(formatDate)(\n client.issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=efa45ea0&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efa45ea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n };\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64eb8494\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\nconst _hoisted_12 = { key: 1 }\nconst _hoisted_13 = [\"href\"]\nconst _hoisted_14 = { class: \"about-instance\" }\nconst _hoisted_15 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const weather_provider: ComputedRef> = computed(() =>\n get_weather_provider()\n )\n\n function get_weather_provider() {\n const weather_provider: Record = {}\n if (appConfig.value.weather_provider === 'darksky') {\n weather_provider['name'] = 'Dark Sky'\n weather_provider['url'] = 'https://darksky.net'\n }\n if (appConfig.value.weather_provider === 'visualcrossing') {\n weather_provider['name'] = 'Visual Crossing'\n weather_provider['url'] = 'https://www.visualcrossing.com'\n }\n return weather_provider\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(weather_provider) && _unref(weather_provider).name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('about.WEATHER_DATA_FROM')) + \" \", 1),\n _createElementVNode(\"a\", {\n href: _unref(weather_provider).url,\n target: \"_blank\",\n rel: \"nofollow noopener\"\n }, _toDisplayString(_unref(weather_provider).name), 9, _hoisted_13)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).about)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"p\", _hoisted_14, _toDisplayString(_ctx.$t('about.ABOUT_THIS_INSTANCE')), 1),\n _createElementVNode(\"div\", {\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).about))\n }, null, 8, _hoisted_15)\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=64eb8494&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64eb8494\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-645a9e33\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_19 = { class: \"data-values\" }\n\nimport { Locale, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport };\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n function hasElevation(workout: IWorkout): boolean {\n return workout && workout.ascent !== null && workout.descent !== null\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(formatDate)(_unref(workout).workout_date, _unref(user).timezone, _unref(user).date_format)\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/ \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (hasElevation(_unref(workout)))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createTextVNode(\" +\"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/- \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=645a9e33&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-645a9e33\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n };\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n };\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n };\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n };\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n };\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n };\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n };\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import createI18n from '@/i18n'\nimport { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatDate, getDateFormat } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean,\n date_format: string\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatDate(record.workout_date, tz, date_format, false),\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean,\n date_format: string\n): IRecordsBySports => {\n date_format = getDateFormat(date_format, locale.value)\n return records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits, date_format)\n )\n }\n return sportList\n }, {})\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8d17c606\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n };\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=8d17c606&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8d17c606\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0c85cb8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent,\n props.user.date_format\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f0c85cb8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f0c85cb8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./PrivacyPolicyToAccept.vue?vue&type=template&id=05532ad6&scoped=true\"\nconst script = {}\n\nimport \"./PrivacyPolicyToAccept.vue?vue&type=style&index=0&id=05532ad6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05532ad6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4056e776\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = {\n key: 0,\n class: \"container privacy-policy-message\"\n}\nconst _hoisted_13 = { class: \"container\" }\nconst _hoisted_14 = { class: \"container dashboard-container\" }\nconst _hoisted_15 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_16 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_18 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import PrivacyPolicyToAccept from '@/components/PrivacyPolicyToAccept.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n (!_unref(authUser).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(PrivacyPolicyToAccept)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_17\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4056e776&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4056e776\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"privacy-policy\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1)\n\nimport { onBeforeMount } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicyView',\n setup(__props) {\n\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(PrivacyPolicy)\n ]),\n _hoisted_3\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58043acb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=58043acb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-58043acb\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport UserPrivacyPolicyValidation from '@/components/User/ProfileEdition/UserPrivacyPolicyValidation.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport PrivacyPolicyView from '@/views/PrivacyPolicyView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n {\n path: 'privacy-policy',\n name: 'UserPrivacyPolicy',\n component: UserPrivacyPolicyValidation,\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/privacy-policy',\n name: 'PrivacyPolicy',\n component: PrivacyPolicyView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about', '/privacy-policy']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n ACCEPT_PRIVACY_POLICY = 'ACCEPT_PRIVACY_POLICY',\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_REQUEST_DATA_EXPORT = 'GET_REQUEST_DATA_EXPORT',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n REQUEST_DATA_EXPORT = 'REQUEST_DATA_EXPORT',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n EXPORT_REQUEST = 'EXPORT_REQUEST',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n SET_EXPORT_REQUEST = 'SET_EXPORT_REQUEST',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_PRIVACY_POLICY = 'GET_APPLICATION_PRIVACY_POLICY',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_PRIVACY_POLICY = 'UPDATE_APPLICATION_PRIVACY_POLICY',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled' && error.response) {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (!res.data.data.accepted_privacy_policy) {\n // refresh privacy policy\n context.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n }\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY](\n context: ActionContext,\n acceptedPolicy: boolean\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/privacy-policy', {\n accepted_policy: acceptedPolicy,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/export/request')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/account/export')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]: (state: IAuthUserState) => {\n return state.exportRequest\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile, IExportRequest } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST](\n state: IAuthUserState,\n exportRequest: IExportRequest\n ) {\n state.exportRequest = exportRequest\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n exportRequest: null,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string | string[]\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](\n state: IRootState,\n appConfig: TAppConfig\n ) {\n state.application.config.privacy_policy = appConfig.privacy_policy\n state.application.config.privacy_policy_date = appConfig.privacy_policy_date\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const notes = payload.notes.replace(/\"/g, '\\\\\"')\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nimport createI18n from '@/i18n'\nimport { localeFromLanguage } from '@/utils/locales'\n\nconst { locale } = createI18n.global\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n dateFormat = getDateFormat(dateFormat, locale.value)\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat, {\n locale: localeFromLanguage[locale.value],\n }),\n workout_time: format(dateTime, timeFormat),\n }\n}\n\nconst availableDateFormats = [\n 'MM/dd/yyyy',\n 'dd/MM/yyyy',\n 'yyyy-MM-dd',\n 'date_string',\n]\nexport const dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n it: 'd MMM yyyy',\n // nb: 'do MMM yyyy',\n nl: 'd MMM yyyy',\n}\n\nexport const getDateFormat = (dateFormat: string, language: string): string => {\n return dateFormat === 'date_string' ? dateStringFormats[language] : dateFormat\n}\n\nexport const formatDate = (\n dateString: string,\n timezone: string,\n dateFormat: string,\n withTime = true,\n language: string | null = null,\n withSeconds = false\n): string => {\n if (!language) {\n language = locale.value\n }\n const timeFormat = withTime ? (withSeconds ? ' HH:mm:ss' : ' HH:mm') : ''\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${timeFormat}`,\n { locale: localeFromLanguage[language] }\n )\n}\n\nexport const availableDateFormatOptions = (\n inputDate: string,\n timezone: string,\n language: string | null = null\n) => {\n const l: string = language ? language : locale.value\n const options: Record[] = []\n availableDateFormats.map((df) => {\n const dateFormat = getDateFormat(df, l)\n options.push({\n label: `${dateFormat} - ${formatDate(\n inputDate,\n timezone,\n dateFormat,\n false,\n l\n )}`,\n value: df,\n })\n })\n return options\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IApiErrorMessage } from '@/types/api'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n const errorInfo: IApiErrorMessage | null =\n error?.response && error.response.data ? error.response.data : null\n\n // if stored token is blacklisted, disconnect user\n if (error?.response?.status === 401 && errorInfo?.error === 'invalid_token') {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : errorInfo?.message\n ? errorInfo.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","import linkifyHtml from 'linkify-html'\nimport sanitizeHtml from 'sanitize-html'\n\nexport const linkifyAndClean = (input: string): string => {\n return sanitizeHtml(linkifyHtml(input, { target: '_blank' }), {\n allowedTags: ['a'],\n disallowedTagsMode: 'escape',\n })\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, it, nl } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n it: it,\n // nb: nb, // disabled for now\n nl: nl,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n it: 'Italiano',\n // nb: 'Norsk bokmål', // disabled for now\n nl: 'Nederlands',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n 'Cycling (Virtual)': '#64a360',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Mountaineering: '#48b3b7',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport createI18n from '@/i18n'\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate, getDateFormat } from '@/utils/dates'\nimport { localeFromLanguage } from '@/utils/locales'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'MM/dd/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean,\n userDateFormat: string\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(\n key,\n params.duration === 'week'\n ? getDateFormat(userDateFormat, locale.value)\n : dateFormat.chart,\n { locale: localeFromLanguage[locale.value] }\n )\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n\nexport const getTemperature = (\n temperatureInCelsius: number,\n useImperialUnits: boolean\n): string => {\n const temperature = useImperialUnits\n ? temperatureInCelsius * 1.8 + 32\n : temperatureInCelsius\n const unit = useImperialUnits ? ' °F' : '°C'\n return `${temperature === 0 ? 0 : Number(temperature).toFixed(1)}${unit}`\n}\n\nexport const getWindSpeed = (\n windSpeedInMS: number,\n useImperialUnits: boolean\n): string => {\n const windSpeed = useImperialUnits ? windSpeedInMS * 2.2369363 : windSpeedInMS\n const unit = useImperialUnits ? ' mph' : 'm/s'\n return `${windSpeed === 0 ? 0 : Number(windSpeed).toFixed(1)}${unit}`\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n };\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string };\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string };\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n };\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const loadLanguagePackage = async (language: string) => {\n // no package available for norwegian bokmal and dutch (Nederlands)\n // fallback to english\n switch (language) {\n case 'fr':\n return await import(\n /* webpackChunkName: \"password.fr\" */ '@zxcvbn-ts/language-fr'\n )\n case 'de':\n return await import(\n /* webpackChunkName: \"password.de\" */ '@zxcvbn-ts/language-de'\n )\n case 'it':\n return await import(\n /* webpackChunkName: \"password.it\" */ '@zxcvbn-ts/language-it'\n )\n default:\n return await import(\n /* webpackChunkName: \"password.en\" */ '@zxcvbn-ts/language-en'\n )\n }\n}\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnLanguagePackage = await loadLanguagePackage(language)\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnLanguagePackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n };\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean };\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean };\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d5e9b348\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartOptions, LayoutItem } from 'chart.js'\n import { PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=1d43a4a8&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units,\n props.user.date_format\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=d5e9b348&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d5e9b348&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5e9b348\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-217519af\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate, getDateFormat } from '@/utils/dates'\n import { localeFromLanguage } from '@/utils/locales'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean };\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n authUser.value.timezone,\n authUser.value.date_format\n )\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(\n new Date(props.user.birth_date),\n `${getDateFormat(authUser.value.date_format, language.value)}`,\n { locale: localeFromLanguage[language.value] }\n )\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=217519af&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-217519af\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelCheckbox as _vModelCheckbox, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f112f24\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = {\n key: 5,\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_11 = [\"disabled\"]\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 3 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = { key: 4 }\nconst _hoisted_16 = { class: \"account\" }\nconst _hoisted_17 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n accepted_policy: false\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n formData.accepted_policy = false\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n disabled: _unref(registration_disabled),\n required: \"\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((formData.accepted_policy) = $event))\n }, null, 40, _hoisted_11), [\n [_vModelCheckbox, formData.accepted_policy]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: \"/privacy-policy\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_12)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=4f112f24&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4f112f24\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 3010,\n\t\"./en/en.ts\": 2709,\n\t\"./fr/fr.ts\": 5479,\n\t\"./it/it.ts\": 6013,\n\t\"./nb/nb.ts\": 1901,\n\t\"./nl/nl.ts\": 3726\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"222\":\"password.fr\",\"261\":\"password.en\",\"328\":\"admin\",\"401\":\"workouts\",\"802\":\"password.it\",\"845\":\"profile\",\"881\":\"password\",\"940\":\"password.de\"}[chunkId] || chunkId) + \".\" + {\"24\":\"572eac46\",\"93\":\"37abd50d\",\"193\":\"d3c3c7bd\",\"222\":\"1d179591\",\"243\":\"d72fe9e5\",\"261\":\"b4ea7085\",\"328\":\"4313b7d9\",\"401\":\"0fd5b207\",\"431\":\"386df171\",\"633\":\"23ee7aff\",\"802\":\"be465eec\",\"845\":\"98e985f4\",\"858\":\"922b6a43\",\"881\":\"c0f2f8e4\",\"940\":\"b81f881f\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"c2966dd5\",\"845\":\"9f83730d\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(136); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","disabledLanguages","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","includes","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","privacy_policy","PrivacyPolicyTranslations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","href","__exports__","_hoisted_12","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","target","watch","_withDirectives","maxLength","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","CyclingVirtual","Hiking","MountainBiking","MountainBikingElectric","Mountaineering","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","rows","snarkdown","linkifyAndClean","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","formatDate","created_at","timezone","date_format","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","appLanguage","userLanguage","languageLabels","fistDayOfWeek","weekm","display_ascent","getDateFormat","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","exportRequest","exportRequestDate","getExportRequestDate","generatingLink","invalidateForm","updateUserForm","updatePassword","updateNewPassword","canRequestExport","isBefore","Date","subDays","updateProfile","payload","updateDisplayModal","deleteAccount","requestExport","async","downloadArchive","filename","responseType","then","archiveFileUrl","URL","createObjectURL","Blob","archive_link","createElement","setAttribute","appendChild","click","finally","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","status","file_name","file_size","first_name","last_name","birth_date","location","bio","registrationDate","format","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","fittrackee_private_policy_date","getTimezone","private_policy_date","getPolicyDate","paragraphs","Intl","DateTimeFormat","resolvedOptions","timeZone","dateStringFormats","privacy_policy_date","paragraph","acceptedPolicy","accepted_privacy_policy","PrivacyPolicy","_vModelCheckbox","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","rel","weather_provider","get_weather_provider","src","alt","BikePic","About","workout","hasElevation","ascent","descent","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","getDateWithTZ","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","PrivacyPolicyToAccept","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","UserPrivacyPolicyValidation","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","PrivacyPolicyView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","accepted_policy","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","formatWorkoutDate","dateTime","timeFormat","workout_time","availableDateFormats","de","en","fr","it","nl","dateString","withTime","withSeconds","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","sanitizeHtml","linkifyHtml","allowedTags","disallowedTagsMode","availableLocales","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","userDateFormat","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","getTemperature","temperatureInCelsius","temperature","Number","getWindSpeed","windSpeedInMS","windSpeed","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","loadLanguagePackage","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnLanguagePackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/profile.98e985f4.js b/fittrackee/dist/static/js/profile.9d91816f.js similarity index 98% rename from fittrackee/dist/static/js/profile.98e985f4.js rename to fittrackee/dist/static/js/profile.9d91816f.js index 17c0f7ed..3d9b10c0 100644 --- a/fittrackee/dist/static/js/profile.98e985f4.js +++ b/fittrackee/dist/static/js/profile.9d91816f.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[845],{4264:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"account-confirmation",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"AccountConfirmationView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,n.Fl)((()=>t.query.token));function m(){S.value?_.dispatch(c.YN.ACTIONS.CONFIRM_ACCOUNT,{token:S.value}):r.push("/")}return(0,n.wF)((()=>m())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,n.up)("router-link");return(0,a.SU)(d)?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n.Wm)(r,{class:"links",to:"/account-confirmation/resend"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)])),_:1})])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-785df978"]]);var m=S},8793:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"email-update",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"EmailUpdateView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.IS_AUTHENTICATED])),m=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,n.Fl)((()=>t.query.token));function R(){p.value?_.dispatch(c.YN.ACTIONS.CONFIRM_EMAIL,{token:p.value,refreshUser:S.value}):r.push("/")}return(0,n.wF)((()=>R())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,n.YP)((()=>m.value),(e=>{d.value.username&&e&&r.push("/")})),(e,t)=>{const r=(0,n.up)("router-link"),u=(0,n.up)("i18n-t");return(0,a.SU)(m)&&!(0,a.SU)(d).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n._)("span",null,[(0,n.Wm)(u,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:(0,n.w5)((()=>[(0,n.Wm)(r,{to:"/login"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("user.LOG_IN")),1)])),_:1})])),_:1})])])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-8c2ec9ce"]]);var m=S},1133:function(e,t,r){r.r(t),r.d(t,{default:function(){return d}});var n=r(6252),a=r(2262),s=r(5801),u=r(9917);const o=e=>((0,n.dD)("data-v-6646c65e"),e=e(),(0,n.Cn)(),e),c={key:0,id:"profile",class:"view"},i=o((()=>(0,n._)("div",{id:"bottom"},null,-1)));var l=(0,n.aZ)({__name:"ProfileView",setup(e){const t=(0,u.o)(),r=(0,n.Fl)((()=>t.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,n.up)("router-view");return(0,a.SU)(r).username?((0,n.wg)(),(0,n.iD)("div",c,[(0,n.Wm)(s,{user:(0,a.SU)(r)},null,8,["user"]),i])):(0,n.kq)("",!0)}}}),E=r(3744);const _=(0,E.Z)(l,[["__scopeId","data-v-6646c65e"]]);var d=_},9453:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var n=r(6252),a=r(2262),s=r(2201),u=r(2179),o=r(1585),c=r(5801),i=r(9917);const l={key:0,id:"user",class:"view"},E={class:"box"};var _=(0,n.aZ)({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:r}=(0,a.BK)(t),_=(0,s.yj)(),d=(0,i.o)(),S=(0,n.Fl)((()=>d.getters[c.RT.GETTERS.USER]));return(0,n.wF)((()=>{_.params.username&&"string"===typeof _.params.username&&d.dispatch(c.RT.ACTIONS.GET_USER,_.params.username)})),(0,n.Jd)((()=>{d.dispatch(c.RT.ACTIONS.EMPTY_USER)})),(e,t)=>(0,a.SU)(S).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(u.Z,{user:(0,a.SU)(S)},null,8,["user"]),(0,n._)("div",E,[(0,n.Wm)(o.Z,{user:(0,a.SU)(S),"from-admin":(0,a.SU)(r)},null,8,["user","from-admin"])])])):(0,n.kq)("",!0)}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-af7007f4"]]);var m=S}}]); -//# sourceMappingURL=profile.98e985f4.js.map \ No newline at end of file +//# sourceMappingURL=profile.9d91816f.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/profile.98e985f4.js.map b/fittrackee/dist/static/js/profile.9d91816f.js.map similarity index 99% rename from fittrackee/dist/static/js/profile.98e985f4.js.map rename to fittrackee/dist/static/js/profile.9d91816f.js.map index c567d95c..50350e92 100644 --- a/fittrackee/dist/static/js/profile.98e985f4.js.map +++ b/fittrackee/dist/static/js/profile.9d91816f.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/profile.98e985f4.js","mappings":"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","sources":["webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue?226f","webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue?502c","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue","webpack://fittrackee_client/./src/views/user/ProfileView.vue?f4e9","webpack://fittrackee_client/./src/views/user/ProfileView.vue","webpack://fittrackee_client/./src/views/user/UserView.vue?8f92","webpack://fittrackee_client/./src/views/user/UserView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-785df978\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"account-confirmation\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmAccount())\n\n function confirmAccount() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT, {\n token: token.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('buttons.ACCOUNT-CONFIRMATION-RESEND')) + \"? \", 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationView.vue?vue&type=style&index=0&id=785df978&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-785df978\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8c2ec9ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"email-update\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted, watch } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EmailUpdateView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmEmail())\n\n function confirmEmail() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL, {\n token: token.value,\n refreshUser: isAuthenticated.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => errorMessages.value,\n (newValue) => {\n if (authUser.value.username && newValue) {\n router.push('/')\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_unref(errorMessages) && !_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.PROFILE.ERRORED_EMAIL_UPDATE\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOG_IN')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./EmailUpdateView.vue?vue&type=style&index=0&id=8c2ec9ce&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8c2ec9ce\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6646c65e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"profile\",\n class: \"view\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileView',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { user: _unref(authUser) }, null, 8, [\"user\"]),\n _hoisted_2\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ProfileView.vue?vue&type=style&index=0&id=6646c65e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6646c65e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-af7007f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"box\" }\n\nimport {\n ComputedRef,\n computed,\n onBeforeMount,\n onBeforeUnmount,\n toRefs,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\n import { USERS_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n fromAdmin: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserView',\n props: {\n fromAdmin: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n fromAdmin: boolean\n };\n\n \n const { fromAdmin } = toRefs(props)\n\n const route = useRoute()\n const store = useStore()\n\n const user: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USER]\n )\n\n onBeforeMount(() => {\n if (route.params.username && typeof route.params.username === 'string') {\n store.dispatch(USERS_STORE.ACTIONS.GET_USER, route.params.username)\n }\n })\n\n onBeforeUnmount(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USER)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(user).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserInfos, {\n user: _unref(user),\n \"from-admin\": _unref(fromAdmin)\n }, null, 8, [\"user\", \"from-admin\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserView.vue?vue&type=style&index=0&id=af7007f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-af7007f4\"]])\n\nexport default __exports__"],"names":["_hoisted_1","key","id","class","_hoisted_2","_defineComponent","__name","setup","__props","route","useRoute","router","useRouter","store","useStore","errorMessages","computed","getters","ROOT_STORE","token","query","confirmAccount","value","dispatch","AUTH_USER_STORE","push","onBeforeMount","onUnmounted","commit","_ctx","_cache","_component_router_link","_resolveComponent","_unref","_openBlock","_createElementBlock","_createVNode","ErrorImg","_createElementVNode","_toDisplayString","$t","to","default","_withCtx","_createTextVNode","_","_createCommentVNode","__exports__","authUser","isAuthenticated","confirmEmail","refreshUser","watch","newValue","username","_component_i18n_t","keypath","_withScopeId","n","_pushScopeId","_popScopeId","_component_router_view","user","props","fromAdmin","type","Boolean","toRefs","USERS_STORE","params","onBeforeUnmount","UserHeader","UserInfos"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/profile.9d91816f.js","mappings":"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","sources":["webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue?226f","webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue?502c","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue","webpack://fittrackee_client/./src/views/user/ProfileView.vue?f4e9","webpack://fittrackee_client/./src/views/user/ProfileView.vue","webpack://fittrackee_client/./src/views/user/UserView.vue?8f92","webpack://fittrackee_client/./src/views/user/UserView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-785df978\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"account-confirmation\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmAccount())\n\n function confirmAccount() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT, {\n token: token.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('buttons.ACCOUNT-CONFIRMATION-RESEND')) + \"? \", 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationView.vue?vue&type=style&index=0&id=785df978&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-785df978\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8c2ec9ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"email-update\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted, watch } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EmailUpdateView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmEmail())\n\n function confirmEmail() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL, {\n token: token.value,\n refreshUser: isAuthenticated.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => errorMessages.value,\n (newValue) => {\n if (authUser.value.username && newValue) {\n router.push('/')\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_unref(errorMessages) && !_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.PROFILE.ERRORED_EMAIL_UPDATE\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOG_IN')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./EmailUpdateView.vue?vue&type=style&index=0&id=8c2ec9ce&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8c2ec9ce\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6646c65e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"profile\",\n class: \"view\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileView',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { user: _unref(authUser) }, null, 8, [\"user\"]),\n _hoisted_2\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ProfileView.vue?vue&type=style&index=0&id=6646c65e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6646c65e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-af7007f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"box\" }\n\nimport {\n ComputedRef,\n computed,\n onBeforeMount,\n onBeforeUnmount,\n toRefs,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\n import { USERS_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n fromAdmin: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserView',\n props: {\n fromAdmin: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n fromAdmin: boolean\n };\n\n \n const { fromAdmin } = toRefs(props)\n\n const route = useRoute()\n const store = useStore()\n\n const user: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USER]\n )\n\n onBeforeMount(() => {\n if (route.params.username && typeof route.params.username === 'string') {\n store.dispatch(USERS_STORE.ACTIONS.GET_USER, route.params.username)\n }\n })\n\n onBeforeUnmount(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USER)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(user).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserInfos, {\n user: _unref(user),\n \"from-admin\": _unref(fromAdmin)\n }, null, 8, [\"user\", \"from-admin\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserView.vue?vue&type=style&index=0&id=af7007f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-af7007f4\"]])\n\nexport default __exports__"],"names":["_hoisted_1","key","id","class","_hoisted_2","_defineComponent","__name","setup","__props","route","useRoute","router","useRouter","store","useStore","errorMessages","computed","getters","ROOT_STORE","token","query","confirmAccount","value","dispatch","AUTH_USER_STORE","push","onBeforeMount","onUnmounted","commit","_ctx","_cache","_component_router_link","_resolveComponent","_unref","_openBlock","_createElementBlock","_createVNode","ErrorImg","_createElementVNode","_toDisplayString","$t","to","default","_withCtx","_createTextVNode","_","_createCommentVNode","__exports__","authUser","isAuthenticated","confirmEmail","refreshUser","watch","newValue","username","_component_i18n_t","keypath","_withScopeId","n","_pushScopeId","_popScopeId","_component_router_view","user","props","fromAdmin","type","Boolean","toRefs","USERS_STORE","params","onBeforeUnmount","UserHeader","UserInfos"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.572eac46.js b/fittrackee/dist/static/js/reset.685c3c25.js similarity index 99% rename from fittrackee/dist/static/js/reset.572eac46.js rename to fittrackee/dist/static/js/reset.685c3c25.js index 3f02289b..73f869d0 100644 --- a/fittrackee/dist/static/js/reset.572eac46.js +++ b/fittrackee/dist/static/js/reset.685c3c25.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[24],{3228:function(t,c,n){n.d(c,{Z:function(){return d}});var a=n(6252);const e={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 345.834 345.834",style:{"enable-background":"new 0 0 345.834 345.834"},"xml:space":"preserve"},s=(0,a._)("g",null,[(0,a._)("path",{d:"M339.798,260.429c0.13-0.026,0.257-0.061,0.385-0.094c0.109-0.028,0.219-0.051,0.326-0.084\n\t\tc0.125-0.038,0.247-0.085,0.369-0.129c0.108-0.039,0.217-0.074,0.324-0.119c0.115-0.048,0.226-0.104,0.338-0.157\n\t\tc0.109-0.052,0.22-0.1,0.327-0.158c0.107-0.057,0.208-0.122,0.312-0.184c0.107-0.064,0.215-0.124,0.319-0.194\n\t\tc0.111-0.074,0.214-0.156,0.321-0.236c0.09-0.067,0.182-0.13,0.27-0.202c0.162-0.133,0.316-0.275,0.466-0.421\n\t\tc0.027-0.026,0.056-0.048,0.083-0.075c0.028-0.028,0.052-0.059,0.079-0.088c0.144-0.148,0.284-0.3,0.416-0.46\n\t\tc0.077-0.094,0.144-0.192,0.216-0.289c0.074-0.1,0.152-0.197,0.221-0.301c0.074-0.111,0.139-0.226,0.207-0.34\n\t\tc0.057-0.096,0.118-0.19,0.171-0.289c0.062-0.115,0.114-0.234,0.169-0.351c0.049-0.104,0.101-0.207,0.146-0.314\n\t\tc0.048-0.115,0.086-0.232,0.128-0.349c0.041-0.114,0.085-0.227,0.12-0.343c0.036-0.118,0.062-0.238,0.092-0.358\n\t\tc0.029-0.118,0.063-0.234,0.086-0.353c0.028-0.141,0.045-0.283,0.065-0.425c0.014-0.1,0.033-0.199,0.043-0.3\n\t\tc0.025-0.249,0.038-0.498,0.038-0.748V92.76c0-4.143-3.357-7.5-7.5-7.5h-236.25c-0.066,0-0.13,0.008-0.196,0.01\n\t\tc-0.143,0.004-0.285,0.01-0.427,0.022c-0.113,0.009-0.225,0.022-0.337,0.037c-0.128,0.016-0.255,0.035-0.382,0.058\n\t\tc-0.119,0.021-0.237,0.046-0.354,0.073c-0.119,0.028-0.238,0.058-0.356,0.092c-0.117,0.033-0.232,0.069-0.346,0.107\n\t\tc-0.117,0.04-0.234,0.082-0.349,0.128c-0.109,0.043-0.216,0.087-0.322,0.135c-0.118,0.053-0.235,0.11-0.351,0.169\n\t\tc-0.099,0.051-0.196,0.103-0.292,0.158c-0.116,0.066-0.23,0.136-0.343,0.208c-0.093,0.06-0.184,0.122-0.274,0.185\n\t\tc-0.106,0.075-0.211,0.153-0.314,0.235c-0.094,0.075-0.186,0.152-0.277,0.231c-0.09,0.079-0.179,0.158-0.266,0.242\n\t\tc-0.099,0.095-0.194,0.194-0.288,0.294c-0.047,0.05-0.097,0.094-0.142,0.145c-0.027,0.03-0.048,0.063-0.074,0.093\n\t\tc-0.094,0.109-0.182,0.223-0.27,0.338c-0.064,0.084-0.13,0.168-0.19,0.254c-0.078,0.112-0.15,0.227-0.222,0.343\n\t\tc-0.059,0.095-0.12,0.189-0.174,0.286c-0.063,0.112-0.118,0.227-0.175,0.342c-0.052,0.105-0.106,0.21-0.153,0.317\n\t\tc-0.049,0.113-0.092,0.23-0.135,0.345c-0.043,0.113-0.087,0.225-0.124,0.339c-0.037,0.115-0.067,0.232-0.099,0.349\n\t\tc-0.032,0.12-0.066,0.239-0.093,0.36c-0.025,0.113-0.042,0.228-0.062,0.342c-0.022,0.13-0.044,0.26-0.06,0.39\n\t\tc-0.013,0.108-0.019,0.218-0.027,0.328c-0.01,0.14-0.019,0.28-0.021,0.421c-0.001,0.041-0.006,0.081-0.006,0.122v46.252\n\t\tc0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-29.595l66.681,59.037c-0.348,0.245-0.683,0.516-0.995,0.827l-65.687,65.687v-49.288\n\t\tc0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v9.164h-38.75c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h38.75v43.231\n\t\tc0,4.143,3.357,7.5,7.5,7.5h236.25c0.247,0,0.494-0.013,0.74-0.037c0.115-0.011,0.226-0.033,0.339-0.049\n\t\tC339.542,260.469,339.67,260.454,339.798,260.429z M330.834,234.967l-65.688-65.687c-0.042-0.042-0.087-0.077-0.13-0.117\n\t\tl49.383-41.897c3.158-2.68,3.546-7.412,0.866-10.571c-2.678-3.157-7.41-3.547-10.571-0.866l-84.381,71.59l-98.444-87.158h208.965\n\t\tV234.967z M185.878,179.888c0.535-0.535,0.969-1.131,1.308-1.765l28.051,24.835c1.418,1.255,3.194,1.885,4.972,1.885\n\t\tc1.726,0,3.451-0.593,4.853-1.781l28.587-24.254c0.26,0.38,0.553,0.743,0.89,1.08l65.687,65.687H120.191L185.878,179.888z"}),(0,a._)("path",{d:"M7.5,170.676h126.667c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H7.5c-4.143,0-7.5,3.357-7.5,7.5\n\t\tS3.357,170.676,7.5,170.676z"}),(0,a._)("path",{d:"M20.625,129.345H77.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H20.625c-4.143,0-7.5,3.357-7.5,7.5\n\t\tS16.482,129.345,20.625,129.345z"}),(0,a._)("path",{d:"M62.5,226.51h-55c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h55c4.143,0,7.5-3.357,7.5-7.5S66.643,226.51,62.5,226.51z"})],-1),o=[s];function r(t,c,n,s,r,i){return(0,a.wg)(),(0,a.iD)("svg",e,o)}var i={name:"EmailSent"},l=n(3744);const u=(0,l.Z)(i,[["render",r]]);var d=u},5639:function(t,c,n){n.r(c),n.d(c,{default:function(){return S}});var a=n(6252),e=n(2262),s=n(3577),o=n(3228),r=n(776);const i={id:"account-confirmation-email",class:"center-card with-margin"},l={key:0,class:"email-sent"},u={class:"email-sent-message"},d={key:1};var v=(0,a.aZ)({__name:"AccountConfirmationEmail",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>{const v=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",i,["email-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.iD)("div",l,[(0,a.Wm)(o.Z),(0,a._)("div",u,(0,s.zw)(t.$t("user.ACCOUNT_CONFIRMATION_SENT")),1)])):((0,a.wg)(),(0,a.iD)("div",d,[(0,a.Wm)(v,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("user.RESENT_ACCOUNT_CONFIRMATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(r.Z,{action:(0,e.SU)(n)},null,8,["action"])])),_:1})]))])}}}),p=n(3744);const w=(0,p.Z)(v,[["__scopeId","data-v-66aca424"]]);var g=w;const _={id:"account-confirmation",class:"view"},h={class:"container"};var m=(0,a.aZ)({__name:"AccountConfirmationResendView",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>((0,a.wg)(),(0,a.iD)("div",_,[(0,a._)("div",h,[(0,a.Wm)(g,{action:(0,e.SU)(n)},null,8,["action"])])]))}});const k=(0,p.Z)(m,[["__scopeId","data-v-35aad344"]]);var S=k},1627:function(t,c,n){n.r(c),n.d(c,{default:function(){return A}});n(7658);var a=n(6252),e=n(2262),s=n(2201),o=n(3577),r=n(3228);const i={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512.001 512.001",style:{"enable-background":"new 0 0 512.001 512.001"},"xml:space":"preserve"},l=(0,a.uE)('',7),u=[l];function d(t,c,n,e,s,o){return(0,a.wg)(),(0,a.iD)("svg",i,u)}var v={name:"Password"},p=n(3744);const w=(0,p.Z)(v,[["render",d]]);var g=w;const _={id:"password-action-done",class:"center-card with-margin"},h={class:"password-message"},m={key:0};var k=(0,a.aZ)({__name:"PasswordActionDone",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>{const s=(0,a.up)("router-link"),i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",_,["request-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.j4)(r.Z,{key:0})):((0,a.wg)(),(0,a.j4)(g,{key:1})),(0,a._)("div",h,["request-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.iD)("span",m,(0,o.zw)(t.$t("user.PASSWORD_SENT_EMAIL_TEXT")),1)):((0,a.wg)(),(0,a.j4)(i,{key:1,keypath:"user.PASSWORD_UPDATED"},{default:(0,a.w5)((()=>[(0,a.Wm)(s,{to:"/login"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.$t("common.HERE")),1)])),_:1})])),_:1}))])])}}});const S=(0,p.Z)(k,[["__scopeId","data-v-eac78356"]]);var C=S,f=n(776);const x={id:"password-reset-request",class:"center-card with-margin"};var z=(0,a.aZ)({__name:"PasswordResetForm",props:{action:null,token:{default:""}},setup(t){const c=t,{action:n,token:s}=(0,e.BK)(c);return(t,c)=>{const r=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",x,[(0,a.Wm)(r,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.$t("user.RESET_PASSWORD")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(f.Z,{action:(0,e.SU)(n),token:(0,e.SU)(s)},null,8,["action","token"])])),_:1})])}}});const U=(0,p.Z)(z,[["__scopeId","data-v-68377e44"]]);var Z=U;const y={id:"password-reset",class:"view"},D={class:"container"};var M=(0,a.aZ)({__name:"PasswordResetView",props:{action:null},setup(t){const c=t,n=(0,s.yj)(),o=(0,s.tv)(),{action:r}=(0,e.BK)(c),i=(0,a.Fl)((()=>n.query.token));return(0,a.wF)((()=>{"reset"!==c.action||i.value||o.push("/")})),(t,c)=>((0,a.wg)(),(0,a.iD)("div",y,[(0,a._)("div",D,[(0,e.SU)(r).startsWith("reset")?((0,a.wg)(),(0,a.j4)(Z,{key:0,action:(0,e.SU)(r),token:(0,e.SU)(i)},null,8,["action","token"])):((0,a.wg)(),(0,a.j4)(C,{key:1,action:(0,e.SU)(r)},null,8,["action"]))])]))}});const E=(0,p.Z)(M,[["__scopeId","data-v-a1cc55c4"]]);var A=E}}]); -//# sourceMappingURL=reset.572eac46.js.map \ No newline at end of file +//# sourceMappingURL=reset.685c3c25.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.572eac46.js.map b/fittrackee/dist/static/js/reset.685c3c25.js.map similarity index 99% rename from fittrackee/dist/static/js/reset.572eac46.js.map rename to fittrackee/dist/static/js/reset.685c3c25.js.map index 704d855f..3b5f8b24 100644 --- a/fittrackee/dist/static/js/reset.572eac46.js.map +++ b/fittrackee/dist/static/js/reset.685c3c25.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/reset.572eac46.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue","webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue?2d84","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue?37ef","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue?3fd8","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue?2ae3","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue?977e","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue?e08b","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue?1ecf","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue"],"sourcesContent":["\n\n\n","import { render } from \"./EmailSent.vue?vue&type=template&id=3377e6a0\"\nimport script from \"./EmailSent.vue?vue&type=script&lang=js\"\nexport * from \"./EmailSent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-66aca424\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation-email\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"email-sent\"\n}\nconst _hoisted_3 = { class: \"email-sent-message\" }\nconst _hoisted_4 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationEmail',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'email-sent')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(EmailSent),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_SENT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESENT_ACCOUNT_CONFIRMATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, { action: _unref(action) }, null, 8, [\"action\"])\n ]),\n _: 1\n })\n ]))\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationEmail.vue?vue&type=style&index=0&id=66aca424&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66aca424\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35aad344\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { toRefs } from 'vue'\n\n import AccountConfirmationResend from '@/components/User/AccountConfirmationEmail.vue'\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationResendView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AccountConfirmationResend, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationResendView.vue?vue&type=style&index=0&id=35aad344&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35aad344\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Password.vue?vue&type=template&id=356e77a2\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eac78356\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-action-done\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"password-message\" }\nconst _hoisted_3 = { key: 0 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import Password from '@/components/Common/Images/Password.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordActionDone',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createBlock(EmailSent, { key: 0 }))\n : (_openBlock(), _createBlock(Password, { key: 1 })),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('user.PASSWORD_SENT_EMAIL_TEXT')), 1))\n : (_openBlock(), _createBlock(_component_i18n_t, {\n key: 1,\n keypath: \"user.PASSWORD_UPDATED\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.HERE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordActionDone.vue?vue&type=style&index=0&id=eac78356&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eac78356\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68377e44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset-request\",\n class: \"center-card with-margin\"\n}\n\nimport { toRefs, withDefaults } from 'vue'\n\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const { action, token } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESET_PASSWORD')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, {\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetForm.vue?vue&type=style&index=0&id=68377e44&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68377e44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a1cc55c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, toRefs, onBeforeMount } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n import PasswordEmailSent from '@/components/User/PasswordReset/PasswordActionDone.vue'\n import PasswordResetRequest from '@/components/User/PasswordReset/PasswordResetForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const route = useRoute()\n const router = useRouter()\n\n const { action } = toRefs(props)\n const token = computed(() => route.query.token)\n\n onBeforeMount(() => {\n if (props.action === 'reset' && !token.value) {\n router.push('/')\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action).startsWith('reset'))\n ? (_openBlock(), _createBlock(PasswordResetRequest, {\n key: 0,\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"]))\n : (_openBlock(), _createBlock(PasswordEmailSent, {\n key: 1,\n action: _unref(action)\n }, null, 8, [\"action\"]))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetView.vue?vue&type=style&index=0&id=a1cc55c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a1cc55c4\"]])\n\nexport default __exports__"],"names":["version","id","xmlns","x","y","viewBox","style","_createElementVNode","d","_hoisted_2","_createElementBlock","_hoisted_1","name","__exports__","render","class","key","_hoisted_3","_hoisted_4","_defineComponent","__name","props","action","setup","__props","toRefs","_ctx","_cache","_component_Card","_resolveComponent","_openBlock","_unref","_createVNode","EmailSent","_toDisplayString","$t","title","_withCtx","_createTextVNode","content","UserAuthForm","_","AccountConfirmationResend","_component_router_link","_component_i18n_t","_createBlock","Password","keypath","default","to","token","route","useRoute","router","useRouter","computed","query","onBeforeMount","value","push","startsWith","PasswordResetRequest","PasswordEmailSent"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/reset.685c3c25.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue","webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue?2d84","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue?37ef","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue?3fd8","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue?2ae3","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue?977e","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue?e08b","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue?1ecf","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue"],"sourcesContent":["\n\n\n","import { render } from \"./EmailSent.vue?vue&type=template&id=3377e6a0\"\nimport script from \"./EmailSent.vue?vue&type=script&lang=js\"\nexport * from \"./EmailSent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-66aca424\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation-email\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"email-sent\"\n}\nconst _hoisted_3 = { class: \"email-sent-message\" }\nconst _hoisted_4 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationEmail',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'email-sent')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(EmailSent),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_SENT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESENT_ACCOUNT_CONFIRMATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, { action: _unref(action) }, null, 8, [\"action\"])\n ]),\n _: 1\n })\n ]))\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationEmail.vue?vue&type=style&index=0&id=66aca424&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66aca424\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35aad344\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { toRefs } from 'vue'\n\n import AccountConfirmationResend from '@/components/User/AccountConfirmationEmail.vue'\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationResendView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AccountConfirmationResend, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationResendView.vue?vue&type=style&index=0&id=35aad344&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35aad344\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Password.vue?vue&type=template&id=356e77a2\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eac78356\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-action-done\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"password-message\" }\nconst _hoisted_3 = { key: 0 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import Password from '@/components/Common/Images/Password.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordActionDone',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createBlock(EmailSent, { key: 0 }))\n : (_openBlock(), _createBlock(Password, { key: 1 })),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('user.PASSWORD_SENT_EMAIL_TEXT')), 1))\n : (_openBlock(), _createBlock(_component_i18n_t, {\n key: 1,\n keypath: \"user.PASSWORD_UPDATED\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.HERE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordActionDone.vue?vue&type=style&index=0&id=eac78356&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eac78356\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68377e44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset-request\",\n class: \"center-card with-margin\"\n}\n\nimport { toRefs, withDefaults } from 'vue'\n\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const { action, token } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESET_PASSWORD')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, {\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetForm.vue?vue&type=style&index=0&id=68377e44&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68377e44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a1cc55c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, toRefs, onBeforeMount } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n import PasswordEmailSent from '@/components/User/PasswordReset/PasswordActionDone.vue'\n import PasswordResetRequest from '@/components/User/PasswordReset/PasswordResetForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const route = useRoute()\n const router = useRouter()\n\n const { action } = toRefs(props)\n const token = computed(() => route.query.token)\n\n onBeforeMount(() => {\n if (props.action === 'reset' && !token.value) {\n router.push('/')\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action).startsWith('reset'))\n ? (_openBlock(), _createBlock(PasswordResetRequest, {\n key: 0,\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"]))\n : (_openBlock(), _createBlock(PasswordEmailSent, {\n key: 1,\n action: _unref(action)\n }, null, 8, [\"action\"]))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetView.vue?vue&type=style&index=0&id=a1cc55c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a1cc55c4\"]])\n\nexport default __exports__"],"names":["version","id","xmlns","x","y","viewBox","style","_createElementVNode","d","_hoisted_2","_createElementBlock","_hoisted_1","name","__exports__","render","class","key","_hoisted_3","_hoisted_4","_defineComponent","__name","props","action","setup","__props","toRefs","_ctx","_cache","_component_Card","_resolveComponent","_openBlock","_unref","_createVNode","EmailSent","_toDisplayString","$t","title","_withCtx","_createTextVNode","content","UserAuthForm","_","AccountConfirmationResend","_component_router_link","_component_i18n_t","_createBlock","Password","keypath","default","to","token","route","useRoute","router","useRouter","computed","query","onBeforeMount","value","push","startsWith","PasswordResetRequest","PasswordEmailSent"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/statistics.d3c3c7bd.js b/fittrackee/dist/static/js/statistics.f4227d0e.js similarity index 98% rename from fittrackee/dist/static/js/statistics.d3c3c7bd.js rename to fittrackee/dist/static/js/statistics.f4227d0e.js index 129b183b..ffec58e4 100644 --- a/fittrackee/dist/static/js/statistics.d3c3c7bd.js +++ b/fittrackee/dist/static/js/statistics.f4227d0e.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{7885:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});var a=t(6252),r=t(2262),l=t(3577),o=(t(7658),t(9150)),n=t(436);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-30799d13"]]);var Z=F,x=t(5630),D=t(5801),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]); -//# sourceMappingURL=statistics.d3c3c7bd.js.map \ No newline at end of file +//# sourceMappingURL=statistics.f4227d0e.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/statistics.d3c3c7bd.js.map b/fittrackee/dist/static/js/statistics.f4227d0e.js.map similarity index 99% rename from fittrackee/dist/static/js/statistics.d3c3c7bd.js.map rename to fittrackee/dist/static/js/statistics.f4227d0e.js.map index ab5f7c9a..f2e2f9d8 100644 --- a/fittrackee/dist/static/js/statistics.d3c3c7bd.js.map +++ b/fittrackee/dist/static/js/statistics.f4227d0e.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/statistics.d3c3c7bd.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue?b88a","webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue?57e4","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/index.vue?2efa","webpack://fittrackee_client/./src/components/Statistics/index.vue","webpack://fittrackee_client/./src/views/StatisticsView.vue?9d34","webpack://fittrackee_client/./src/views/StatisticsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-22d55de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-menu\" }\nconst _hoisted_2 = { class: \"chart-arrow\" }\nconst _hoisted_3 = { class: \"time-frames custom-checkboxes-group\" }\nconst _hoisted_4 = { class: \"time-frames-checkboxes custom-checkboxes\" }\nconst _hoisted_5 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_6 = { class: \"chart-arrow\" }\n\nimport { ref } from 'vue'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsMenu',\n emits: ['arrowClick', 'timeFrameUpdate'],\n setup(__props, { emit }) {\n\n \n\n const selectedTimeFrame = ref('month')\n const timeFrames = ['week', 'month', 'year']\n\n function onUpdateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n emit('timeFrameUpdate', timeFrame)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('arrowClick', true)))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(timeFrames, (frame) => {\n return _createElementVNode(\"div\", {\n class: \"time-frame custom-checkbox\",\n key: frame\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: frame,\n name: frame,\n checked: selectedTimeFrame.value === frame,\n onInput: ($event: any) => (onUpdateTimeFrame(frame))\n }, null, 40, _hoisted_5),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`statistics.TIME_FRAMES.${frame}`)), 1)\n ])\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('arrowClick', false)))\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsMenu.vue?vue&type=style&index=0&id=22d55de2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-22d55de2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"sports-menu\" }\nconst _hoisted_2 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_3 = { class: \"sport-label\" }\n\nimport { ComputedRef, computed, inject, withDefaults, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n userSports: ISport[]\n selectedSportIds?: number[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsSportsMenu',\n props: {\n userSports: null,\n selectedSportIds: { default: () => [] }\n },\n emits: ['selectedSportIdsUpdate'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { userSports: ISport[], selectedSportIds: number[] };\n\n \n\n \n\n const { t } = useI18n()\n\n const sportColors = inject('sportColors')\n const { selectedSportIds } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.userSports, t)\n )\n\n function updateSelectedSportIds(sportId: number) {\n emit('selectedSportIdsUpdate', sportId)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n type: \"checkbox\",\n key: sport.id,\n style: _normalizeStyle({ color: sport.color ? sport.color : _unref(sportColors)[sport.label] })\n }, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n id: sport.id,\n name: sport.label,\n checked: _unref(selectedSportIds).includes(sport.id),\n onInput: ($event: any) => (updateSelectedSportIds(sport.id))\n }, null, 40, _hoisted_2),\n _createVNode(_component_SportImage, {\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(sport.translatedLabel), 1)\n ], 4))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsSportsMenu.vue?vue&type=style&index=0&id=31a8ca60&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-30799d13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user-statistics\"\n}\n\nimport { ComputedRef, Ref, computed, ref, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import StatsMenu from '@/components/Statistics/StatsMenu.vue'\n import SportsMenu from '@/components/Statistics/StatsSportsMenu.vue'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IStatisticsDateParams } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { getStatsDateParams, updateChartParams } from '@/utils/statistics'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { sports, user } = toRefs(props)\n const selectedTimeFrame = ref('month')\n const chartParams: Ref = ref(\n getChartParams(selectedTimeFrame.value)\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const selectedSportIds: Ref = ref(getSports(props.sports))\n\n function updateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n chartParams.value = getChartParams(selectedTimeFrame.value)\n }\n function getChartParams(timeFrame: string): IStatisticsDateParams {\n return getStatsDateParams(new Date(), timeFrame, props.user.weekm)\n }\n function handleOnClickArrows(backward: boolean) {\n chartParams.value = updateChartParams(\n chartParams.value,\n backward,\n props.user.weekm\n )\n }\n function getSports(sports: ISport[]) {\n return sports.map((sport) => sport.id)\n }\n function updateSelectedSportIds(sportId: number) {\n if (selectedSportIds.value.includes(sportId)) {\n selectedSportIds.value = selectedSportIds.value.filter(\n (id) => id !== sportId\n )\n } else {\n selectedSportIds.value.push(sportId)\n }\n }\n\n watch(\n () => props.sports,\n (newSports) => {\n selectedSportIds.value = getSports(newSports)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(translatedSports))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatsMenu, {\n onTimeFrameUpdate: updateTimeFrame,\n onArrowClick: handleOnClickArrows\n }),\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n chartParams: chartParams.value,\n \"displayed-sport-ids\": selectedSportIds.value,\n fullStats: true\n }, null, 8, [\"sports\", \"user\", \"chartParams\", \"displayed-sport-ids\"]),\n _createVNode(SportsMenu, {\n \"selected-sport-ids\": selectedSportIds.value,\n \"user-sports\": _unref(sports),\n onSelectedSportIdsUpdate: updateSelectedSportIds\n }, null, 8, [\"selected-sport-ids\", \"user-sports\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=30799d13&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-30799d13\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2e341d4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"statistics\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\n\nimport { ComputedRef, computed } from 'vue'\n\n import Statistics from '@/components/Statistics/index.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatisticsView',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(() =>\n store.getters[SPORTS_STORE.GETTERS.SPORTS].filter((sport) =>\n authUser.value.sports_list.includes(sport.id)\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(Statistics, {\n class: _normalizeClass({ 'stats-disabled': _unref(authUser).nb_workouts === 0 }),\n user: _unref(authUser),\n sports: _unref(sports)\n }, null, 8, [\"class\", \"user\", \"sports\"])\n ]),\n _: 1\n }),\n (_unref(authUser).nb_workouts === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatisticsView.vue?vue&type=style&index=0&id=2e341d4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2e341d4e\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","emits","setup","__props","emit","selectedTimeFrame","ref","timeFrames","onUpdateTimeFrame","timeFrame","value","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","onClick","$event","_Fragment","_renderList","frame","key","type","id","name","checked","onInput","_toDisplayString","$t","__exports__","props","userSports","selectedSportIds","default","t","useI18n","sportColors","inject","toRefs","translatedSports","computed","translateSports","updateSelectedSportIds","sportId","_component_SportImage","_resolveComponent","_unref","sport","style","_normalizeStyle","color","label","includes","_createVNode","translatedLabel","sports","user","chartParams","getChartParams","getSports","updateTimeFrame","getStatsDateParams","Date","weekm","handleOnClickArrows","backward","updateChartParams","map","filter","push","watch","newSports","StatsMenu","onTimeFrameUpdate","onArrowClick","StatChart","fullStats","SportsMenu","onSelectedSportIdsUpdate","_createCommentVNode","store","useStore","authUser","getters","AUTH_USER_STORE","SPORTS_STORE","sports_list","_component_Card","username","title","_withCtx","_createTextVNode","content","Statistics","_normalizeClass","nb_workouts","_","_createBlock","NoWorkouts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/statistics.f4227d0e.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue?b88a","webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue?57e4","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/index.vue?2efa","webpack://fittrackee_client/./src/components/Statistics/index.vue","webpack://fittrackee_client/./src/views/StatisticsView.vue?9d34","webpack://fittrackee_client/./src/views/StatisticsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-22d55de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-menu\" }\nconst _hoisted_2 = { class: \"chart-arrow\" }\nconst _hoisted_3 = { class: \"time-frames custom-checkboxes-group\" }\nconst _hoisted_4 = { class: \"time-frames-checkboxes custom-checkboxes\" }\nconst _hoisted_5 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_6 = { class: \"chart-arrow\" }\n\nimport { ref } from 'vue'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsMenu',\n emits: ['arrowClick', 'timeFrameUpdate'],\n setup(__props, { emit }) {\n\n \n\n const selectedTimeFrame = ref('month')\n const timeFrames = ['week', 'month', 'year']\n\n function onUpdateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n emit('timeFrameUpdate', timeFrame)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('arrowClick', true)))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(timeFrames, (frame) => {\n return _createElementVNode(\"div\", {\n class: \"time-frame custom-checkbox\",\n key: frame\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: frame,\n name: frame,\n checked: selectedTimeFrame.value === frame,\n onInput: ($event: any) => (onUpdateTimeFrame(frame))\n }, null, 40, _hoisted_5),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`statistics.TIME_FRAMES.${frame}`)), 1)\n ])\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('arrowClick', false)))\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsMenu.vue?vue&type=style&index=0&id=22d55de2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-22d55de2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"sports-menu\" }\nconst _hoisted_2 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_3 = { class: \"sport-label\" }\n\nimport { ComputedRef, computed, inject, withDefaults, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n userSports: ISport[]\n selectedSportIds?: number[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsSportsMenu',\n props: {\n userSports: null,\n selectedSportIds: { default: () => [] }\n },\n emits: ['selectedSportIdsUpdate'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { userSports: ISport[], selectedSportIds: number[] };\n\n \n\n \n\n const { t } = useI18n()\n\n const sportColors = inject('sportColors')\n const { selectedSportIds } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.userSports, t)\n )\n\n function updateSelectedSportIds(sportId: number) {\n emit('selectedSportIdsUpdate', sportId)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n type: \"checkbox\",\n key: sport.id,\n style: _normalizeStyle({ color: sport.color ? sport.color : _unref(sportColors)[sport.label] })\n }, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n id: sport.id,\n name: sport.label,\n checked: _unref(selectedSportIds).includes(sport.id),\n onInput: ($event: any) => (updateSelectedSportIds(sport.id))\n }, null, 40, _hoisted_2),\n _createVNode(_component_SportImage, {\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(sport.translatedLabel), 1)\n ], 4))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsSportsMenu.vue?vue&type=style&index=0&id=31a8ca60&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-30799d13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user-statistics\"\n}\n\nimport { ComputedRef, Ref, computed, ref, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import StatsMenu from '@/components/Statistics/StatsMenu.vue'\n import SportsMenu from '@/components/Statistics/StatsSportsMenu.vue'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IStatisticsDateParams } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { getStatsDateParams, updateChartParams } from '@/utils/statistics'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { sports, user } = toRefs(props)\n const selectedTimeFrame = ref('month')\n const chartParams: Ref = ref(\n getChartParams(selectedTimeFrame.value)\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const selectedSportIds: Ref = ref(getSports(props.sports))\n\n function updateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n chartParams.value = getChartParams(selectedTimeFrame.value)\n }\n function getChartParams(timeFrame: string): IStatisticsDateParams {\n return getStatsDateParams(new Date(), timeFrame, props.user.weekm)\n }\n function handleOnClickArrows(backward: boolean) {\n chartParams.value = updateChartParams(\n chartParams.value,\n backward,\n props.user.weekm\n )\n }\n function getSports(sports: ISport[]) {\n return sports.map((sport) => sport.id)\n }\n function updateSelectedSportIds(sportId: number) {\n if (selectedSportIds.value.includes(sportId)) {\n selectedSportIds.value = selectedSportIds.value.filter(\n (id) => id !== sportId\n )\n } else {\n selectedSportIds.value.push(sportId)\n }\n }\n\n watch(\n () => props.sports,\n (newSports) => {\n selectedSportIds.value = getSports(newSports)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(translatedSports))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatsMenu, {\n onTimeFrameUpdate: updateTimeFrame,\n onArrowClick: handleOnClickArrows\n }),\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n chartParams: chartParams.value,\n \"displayed-sport-ids\": selectedSportIds.value,\n fullStats: true\n }, null, 8, [\"sports\", \"user\", \"chartParams\", \"displayed-sport-ids\"]),\n _createVNode(SportsMenu, {\n \"selected-sport-ids\": selectedSportIds.value,\n \"user-sports\": _unref(sports),\n onSelectedSportIdsUpdate: updateSelectedSportIds\n }, null, 8, [\"selected-sport-ids\", \"user-sports\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=30799d13&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-30799d13\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2e341d4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"statistics\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\n\nimport { ComputedRef, computed } from 'vue'\n\n import Statistics from '@/components/Statistics/index.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatisticsView',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(() =>\n store.getters[SPORTS_STORE.GETTERS.SPORTS].filter((sport) =>\n authUser.value.sports_list.includes(sport.id)\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(Statistics, {\n class: _normalizeClass({ 'stats-disabled': _unref(authUser).nb_workouts === 0 }),\n user: _unref(authUser),\n sports: _unref(sports)\n }, null, 8, [\"class\", \"user\", \"sports\"])\n ]),\n _: 1\n }),\n (_unref(authUser).nb_workouts === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatisticsView.vue?vue&type=style&index=0&id=2e341d4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2e341d4e\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","emits","setup","__props","emit","selectedTimeFrame","ref","timeFrames","onUpdateTimeFrame","timeFrame","value","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","onClick","$event","_Fragment","_renderList","frame","key","type","id","name","checked","onInput","_toDisplayString","$t","__exports__","props","userSports","selectedSportIds","default","t","useI18n","sportColors","inject","toRefs","translatedSports","computed","translateSports","updateSelectedSportIds","sportId","_component_SportImage","_resolveComponent","_unref","sport","style","_normalizeStyle","color","label","includes","_createVNode","translatedLabel","sports","user","chartParams","getChartParams","getSports","updateTimeFrame","getStatsDateParams","Date","weekm","handleOnClickArrows","backward","updateChartParams","map","filter","push","watch","newSports","StatsMenu","onTimeFrameUpdate","onArrowClick","StatChart","fullStats","SportsMenu","onSelectedSportIdsUpdate","_createCommentVNode","store","useStore","authUser","getters","AUTH_USER_STORE","SPORTS_STORE","sports_list","_component_Card","username","title","_withCtx","_createTextVNode","content","Statistics","_normalizeClass","nb_workouts","_","_createBlock","NoWorkouts"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.0fd5b207.js b/fittrackee/dist/static/js/workouts.a06ab85f.js similarity index 99% rename from fittrackee/dist/static/js/workouts.0fd5b207.js rename to fittrackee/dist/static/js/workouts.a06ab85f.js index 5bf5dfe3..b8663e28 100644 --- a/fittrackee/dist/static/js/workouts.0fd5b207.js +++ b/fittrackee/dist/static/js/workouts.a06ab85f.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[401],{2238:function(t,e,o){o.d(e,{Z:function(){return nt}});o(7658);var a=o(6252),n=o(3577),l=o(2262),r=o(9963),s=o(9150),i=o(2201),u=o(5801),d=o(9917),c=o(6558),p=o(8966),m=o(631),w=o(3649);const k={id:"workout-form"},_=["onSubmit"],v={class:"form-items"},f={key:0,class:"form-item-radio"},g=["checked","disabled"],y={for:"withGpx"},S=["checked","disabled"],U={for:"withoutGpx"},h={class:"form-item"},b=["disabled"],T=["value"],E={key:1,class:"form-item"},D={for:"gpxFile"},O=["disabled"],I={class:"files-help info-box"},A={key:2,class:"form-item"},C={for:"title"},R=["required","disabled"],$={key:3},N={class:"workout-date-duration"},x={class:"form-item"},z={class:"workout-date-time"},L=["disabled"],j=["disabled"],W={class:"form-item"},P=["disabled"],F=["disabled"],B=["disabled"],H={class:"workout-data"},M={class:"form-item"},q=["disabled"],Z={class:"form-item"},G=["disabled"],K={class:"form-item"},V=["disabled"],Y={class:"form-item"},X={key:1},J={key:2,class:"form-buttons"},Q=["disabled"],tt=["onClick"];var et=(0,a.aZ)({__name:"WorkoutEdition",props:{authUser:null,sports:null,isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},workout:{default:()=>({})}},setup(t){const e=t,{t:o}=(0,s.QT)(),et=(0,d.o)(),ot=(0,i.tv)(),{authUser:at,workout:nt,isCreation:lt,loading:rt}=(0,l.BK)(e),st=(0,a.Fl)((()=>(0,m.xH)(e.sports,o,"is_active_for_user",nt.value.id?[nt.value.sport_id]:[]))),it=(0,a.Fl)((()=>et.getters[u.SY.GETTERS.APP_CONFIG])),ut=it.value.max_single_file_size?(0,p.Z)(it.value.max_single_file_size):"",dt=it.value.gpx_limit_import,ct=it.value.max_zip_file_size?(0,p.Z)(it.value.max_zip_file_size):"",pt=(0,a.Fl)((()=>et.getters[u.SY.GETTERS.ERROR_MESSAGES])),mt=(0,l.qj)({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:"",workoutAscent:"",workoutDescent:""}),wt=(0,l.iH)(e.workout.id?e.workout.with_gpx:e.isCreation);let kt=null;const _t=(0,l.iH)(!1),vt=(0,l.iH)([]);function ft(t){mt.notes=t}function gt(){wt.value=!wt.value,_t.value=!1}function yt(t){t.target.files&&(kt=t.target.files[0])}function St(t){if(mt.sport_id=`${t.sport_id}`,mt.title=t.title,mt.notes=t.notes,!t.with_gpx){const o=(0,c.Jo)((0,c.eB)(t.workout_date,e.authUser.timezone),"yyyy-MM-dd"),a=t.duration.split(":");mt.workoutDistance=`${at.value.imperial_units?(0,w.sC)(t.distance,"km","mi",3):parseFloat(t.distance.toFixed(3))}`,mt.workoutDate=o.workout_date,mt.workoutTime=o.workout_time,mt.workoutDurationHour=a[0],mt.workoutDurationMinutes=a[1],mt.workoutDurationSeconds=a[2],mt.workoutAscent=null===t.ascent?"":`${at.value.imperial_units?(0,w.sC)(t.ascent,"m","ft",2):parseFloat(t.ascent.toFixed(2))}`,mt.workoutDescent=null===t.descent?"":`${at.value.imperial_units?(0,w.sC)(t.descent,"m","ft",2):parseFloat(t.descent.toFixed(2))}`}}function Ut(){return vt.value.includes("workouts.INVALID_DISTANCE")}function ht(){return vt.value.includes("workouts.INVALID_DURATION")}function bt(){return vt.value.includes("workouts.INVALID_ASCENT_OR_DESCENT")}function Tt(t){vt.value=[],t.title=mt.title,t.duration=3600*+mt.workoutDurationHour+60*+mt.workoutDurationMinutes+ +mt.workoutDurationSeconds,t.duration<=0&&vt.value.push("workouts.INVALID_DURATION"),t.distance=at.value.imperial_units?(0,w.sC)(+mt.workoutDistance,"mi","km",3):+mt.workoutDistance,t.distance<=0&&vt.value.push("workouts.INVALID_DISTANCE"),t.workout_date=`${mt.workoutDate} ${mt.workoutTime}`,t.ascent=""===mt.workoutAscent?null:at.value.imperial_units?(0,w.sC)(+mt.workoutAscent,"ft","m",3):+mt.workoutAscent,t.descent=""===mt.workoutDescent?null:at.value.imperial_units?(0,w.sC)(+mt.workoutDescent,"ft","m",3):+mt.workoutDescent,(null!==t.ascent&&null===t.descent||null===t.ascent&&null!==t.descent)&&vt.value.push("workouts.INVALID_ASCENT_OR_DESCENT")}function Et(){const t={sport_id:+mt.sport_id,notes:mt.notes};if(e.workout.id)e.workout.with_gpx?t.title=mt.title:Tt(t),vt.value.length>0?et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,vt.value):et.dispatch(u.aX.ACTIONS.EDIT_WORKOUT,{workoutId:e.workout.id,data:t});else if(wt.value){if(!kt){const t="workouts.NO_FILE_PROVIDED";return void et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,t)}t.file=kt,et.dispatch(u.aX.ACTIONS.ADD_WORKOUT,t)}else Tt(t),vt.value.length>0?et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,vt.value):et.dispatch(u.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,t)}function Dt(){e.workout.id?ot.push({name:"Workout",params:{workoutId:e.workout.id}}):ot.go(-1)}function Ot(){_t.value=!0}return(0,a.bv)((()=>{e.workout.id&&St(e.workout)})),(0,a.Ah)((()=>et.commit(u.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,a.YP)((()=>e.workout),(async(t,e)=>{t!==e&&t&&t.id&&St(t)})),(t,e)=>{const o=(0,a.up)("CustomTextArea"),s=(0,a.up)("ErrorMessage"),i=(0,a.up)("Loader"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",{id:"workout-edition",class:(0,n.C_)(["center-card with-margin",{"center-form":(0,l.SU)(nt)&&(0,l.SU)(nt).with_gpx}])},[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,n.zw)(t.$t(`workouts.${(0,l.SU)(lt)?"ADD":"EDIT"}_WORKOUT`)),1)])),content:(0,a.w5)((()=>[(0,a._)("div",k,[(0,a._)("form",{class:(0,n.C_)({errors:_t.value}),onSubmit:(0,r.iM)(Et,["prevent"])},[(0,a._)("div",v,[(0,l.SU)(lt)?((0,a.wg)(),(0,a.iD)("div",f,[(0,a._)("div",null,[(0,a._)("input",{id:"withGpx",type:"radio",checked:wt.value,disabled:(0,l.SU)(rt),onClick:gt},null,8,g),(0,a._)("label",y,(0,n.zw)(t.$t("workouts.WITH_GPX")),1)]),(0,a._)("div",null,[(0,a._)("input",{id:"withoutGpx",type:"radio",checked:!wt.value,disabled:(0,l.SU)(rt),onClick:gt},null,8,S),(0,a._)("label",U,(0,n.zw)(t.$t("workouts.WITHOUT_GPX")),1)])])):(0,a.kq)("",!0),(0,a._)("div",h,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.SPORT",1))+"*: ",1),(0,a.wy)((0,a._)("select",{id:"sport",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[0]||(e[0]=t=>mt.sport_id=t)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,l.SU)(st),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,n.zw)(t.translatedLabel),9,T)))),128))],40,b),[[r.bM,mt.sport_id]])]),(0,l.SU)(lt)&&wt.value?((0,a.wg)(),(0,a.iD)("div",E,[(0,a._)("label",D,(0,n.zw)(t.$t("workouts.GPX_FILE"))+" "+(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+"*: ",1),(0,a._)("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:(0,l.SU)(rt),required:"",onInvalid:Ot,onInput:yt},null,40,O),(0,a._)("div",I,[(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.GPX_FILE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(ut)),1)])]),(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.NO_FOLDER")),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_FILES"))+": "+(0,n.zw)((0,l.SU)(dt)),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(ct)),1)])])])])):((0,a.wg)(),(0,a.iD)("div",A,[(0,a._)("label",C,(0,n.zw)(t.$t("workouts.TITLE"))+": ",1),(0,a.wy)((0,a._)("input",{id:"title",name:"title",type:"text",required:!(0,l.SU)(lt),onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[1]||(e[1]=t=>mt.title=t)},null,40,R),[[r.nr,mt.title]])])),wt.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$,[(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.WORKOUT_DATE"))+"*:",1),(0,a._)("div",z,[(0,a.wy)((0,a._)("input",{id:"workout-date",name:"workout-date",type:"date",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[2]||(e[2]=t=>mt.workoutDate=t)},null,40,L),[[r.nr,mt.workoutDate]]),(0,a.wy)((0,a._)("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[3]||(e[3]=t=>mt.workoutTime=t)},null,40,j),[[r.nr,mt.workoutTime]])])]),(0,a._)("div",W,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DURATION"))+"*:",1),(0,a._)("div",null,[(0,a.wy)((0,a._)("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",placeholder:"HH",minlength:"1",maxlength:"2",pattern:"^([0-1]?[0-9]|2[0-3])$",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[4]||(e[4]=t=>mt.workoutDurationHour=t)},null,42,P),[[r.nr,mt.workoutDurationHour]]),(0,a.Uk)(" : "),(0,a.wy)((0,a._)("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"MM",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[5]||(e[5]=t=>mt.workoutDurationMinutes=t)},null,42,F),[[r.nr,mt.workoutDurationMinutes]]),(0,a.Uk)(" : "),(0,a.wy)((0,a._)("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"SS",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[6]||(e[6]=t=>mt.workoutDurationSeconds=t)},null,42,B),[[r.nr,mt.workoutDurationSeconds]])])])]),(0,a._)("div",H,[(0,a._)("div",M,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"mi":"km")+")*: ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:Ut()}),name:"workout-distance",type:"number",min:"0",step:"0.001",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[7]||(e[7]=t=>mt.workoutDistance=t)},null,42,q),[[r.nr,mt.workoutDistance]])]),(0,a._)("div",Z,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.ASCENT"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"ft":"m")+"): ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:bt()}),name:"workout-ascent",type:"number",min:"0",step:"0.01",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[8]||(e[8]=t=>mt.workoutAscent=t)},null,42,G),[[r.nr,mt.workoutAscent]])]),(0,a._)("div",K,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DESCENT"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"ft":"m")+"): ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:bt()}),name:"workout-descent",type:"number",min:"0",step:"0.01",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[9]||(e[9]=t=>mt.workoutDescent=t)},null,42,V),[[r.nr,mt.workoutDescent]])])])])),(0,a._)("div",Y,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.NOTES"))+": ",1),(0,a.Wm)(o,{name:"notes",input:mt.notes,disabled:(0,l.SU)(rt),onUpdateValue:ft},null,8,["input","disabled"])])]),(0,l.SU)(pt)?((0,a.wg)(),(0,a.j4)(s,{key:0,message:(0,l.SU)(pt)},null,8,["message"])):(0,a.kq)("",!0),(0,l.SU)(rt)?((0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(i)])):((0,a.wg)(),(0,a.iD)("div",J,[(0,a._)("button",{class:"confirm",type:"submit",disabled:(0,l.SU)(rt)},(0,n.zw)(t.$t("buttons.SUBMIT")),9,Q),(0,a._)("button",{class:"cancel",onClick:(0,r.iM)(Dt,["prevent"])},(0,n.zw)(t.$t("buttons.CANCEL")),9,tt)]))],42,_)])])),_:1})],2)}}}),ot=o(3744);const at=(0,ot.Z)(et,[["__scopeId","data-v-45d3bf87"]]);var nt=at},4189:function(t,e,o){o.r(e),o.d(e,{default:function(){return p}});var a=o(6252),n=o(2262),l=o(2238),r=o(5801),s=o(9917);const i={id:"add-workout",class:"view"},u={class:"container"};var d=(0,a.aZ)({__name:"AddWorkout",setup(t){const e=(0,s.o)(),o=(0,a.Fl)((()=>e.getters[r.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>e.getters[r.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>e.getters[r.aX.GETTERS.WORKOUT_DATA]));return(t,e)=>((0,a.wg)(),(0,a.iD)("div",i,[(0,a._)("div",u,[(0,a.Wm)(l.Z,{authUser:(0,n.SU)(d),sports:(0,n.SU)(o),isCreation:!0,loading:(0,n.SU)(c).loading},null,8,["authUser","sports","loading"])])]))}});const c=d;var p=c},8237:function(t,e,o){o.r(e),o.d(e,{default:function(){return m}});var a=o(6252),n=o(2262),l=o(2201),r=o(2238),s=o(5801),i=o(9917);const u={id:"edit-workout",class:"view"},d={class:"container"};var c=(0,a.aZ)({__name:"EditWorkout",setup(t){const e=(0,l.yj)(),o=(0,i.o)(),c=(0,a.Fl)((()=>o.getters[s.YN.GETTERS.AUTH_USER_PROFILE])),p=(0,a.Fl)((()=>o.getters[s.O8.GETTERS.SPORTS])),m=(0,a.Fl)((()=>o.getters[s.aX.GETTERS.WORKOUT_DATA]));return(0,a.wF)((()=>{o.dispatch(s.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:e.params.workoutId})})),(0,a.YP)((()=>e.params.workoutId),(async t=>{t||o.commit(s.aX.MUTATIONS.EMPTY_WORKOUT)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",u,[(0,a._)("div",d,[(0,n.SU)(m).workout.id?((0,a.wg)(),(0,a.j4)(r.Z,{key:0,authUser:(0,n.SU)(c),sports:(0,n.SU)(p),workout:(0,n.SU)(m).workout,loading:(0,n.SU)(m).loading},null,8,["authUser","sports","workout","loading"])):(0,a.kq)("",!0)])]))}});const p=c;var m=p},5018:function(t,e,o){o.r(e),o.d(e,{default:function(){return ma}});var a=o(6252),n=o(2262),l=o(2201),r=o(8273),s=(o(7658),o(3577)),i=o(9963),u=o(5167);const d=t=>((0,a.dD)("data-v-4d9f9a8a"),t=t(),(0,a.Cn)(),t),c={id:"workout-card-title"},p=["title"],m=d((()=>(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),w=[m],k={class:"workout-card-title"},_={class:"workout-title-date"},v={key:0,class:"workout-title"},f={key:1,class:"workout-title"},g={class:"workout-segment"},y=d((()=>(0,a._)("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1))),S={class:"workout-date"},U={class:"workout-link"},h=["title"],b=d((()=>(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1))),T=[b];var E=(0,a.aZ)({__name:"WorkoutCardTitle",props:{sport:null,workoutObject:null},emits:["displayModal"],setup(t,{emit:e}){const o=t,{sport:l,workoutObject:r}=(0,n.BK)(o);async function d(t){await u.Z.get(`workouts/${t}/gpx/download`,{responseType:"blob"}).then((e=>{const o=window.URL.createObjectURL(new Blob([e.data],{type:"application/gpx+xml"})),a=document.createElement("a");a.href=o,a.setAttribute("download",`${t}.gpx`),document.body.appendChild(a),a.click()}))}return(t,o)=>{const u=(0,a.up)("SportImage"),m=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",{class:(0,s.C_)(["workout-previous workout-arrow",{inactive:!(0,n.SU)(r).previousUrl}]),title:(0,n.SU)(r).previousUrl?t.$t(`workouts.PREVIOUS_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_PREVIOUS_${(0,n.SU)(r).type}`),onClick:o[0]||(o[0]=e=>(0,n.SU)(r).previousUrl?t.$router.push((0,n.SU)(r).previousUrl):null)},w,10,p),(0,a._)("div",k,[(0,a.Wm)(u,{"sport-label":(0,n.SU)(l).label,color:(0,n.SU)(l).color},null,8,["sport-label","color"]),(0,a._)("div",_,["WORKOUT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.iD)("div",v,[(0,a._)("span",null,(0,s.zw)((0,n.SU)(r).title),1),(0,a._)("i",{class:"fa fa-edit","aria-hidden":"true",onClick:o[1]||(o[1]=e=>t.$router.push({name:"EditWorkout",params:{workoutId:(0,n.SU)(r).workoutId}}))}),(0,n.SU)(r).with_gpx?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-download","aria-hidden":"true",onClick:o[2]||(o[2]=(0,i.iM)((t=>d((0,n.SU)(r).workoutId)),["prevent"]))})):(0,a.kq)("",!0),(0,a._)("i",{class:"fa fa-trash","aria-hidden":"true",onClick:o[3]||(o[3]=t=>e("displayModal",!0))})])):((0,a.wg)(),(0,a.iD)("div",f,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).title)+" ",1),(0,a._)("span",g,[(0,a.Uk)(" — "),y,(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.SEGMENT"))+" "+(0,s.zw)((0,n.SU)(r).segmentId+1),1)])])),(0,a._)("div",S,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).workoutDate)+" - "+(0,s.zw)((0,n.SU)(r).workoutTime)+" ",1),(0,a._)("span",U,["SEGMENT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.j4)(m,{key:0,to:{name:"Workout",params:{workoutId:(0,n.SU)(r).workoutId}}},{default:(0,a.w5)((()=>[(0,a.Uk)(" > "+(0,s.zw)(t.$t("workouts.BACK_TO_WORKOUT")),1)])),_:1},8,["to"])):(0,a.kq)("",!0)])])])]),(0,a._)("div",{class:(0,s.C_)(["workout-next workout-arrow",{inactive:!(0,n.SU)(r).nextUrl}]),title:(0,n.SU)(r).nextUrl?t.$t(`workouts.NEXT_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_NEXT_${(0,n.SU)(r).type}`),onClick:o[4]||(o[4]=e=>(0,n.SU)(r).nextUrl?t.$router.push((0,n.SU)(r).nextUrl):null)},T,10,h)])}}}),D=o(3744);const O=(0,D.Z)(E,[["__scopeId","data-v-4d9f9a8a"]]);var I=O;const A=t=>((0,a.dD)("data-v-1a5282f6"),t=t(),(0,a.Cn)(),t),C={key:0,class:"workout-record"},R=A((()=>(0,a._)("sup",null,[(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1))),$=[R];var N=(0,a.aZ)({__name:"WorkoutRecord",props:{recordType:null,workoutObject:null},setup(t){const e=t,{recordType:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).records&&(0,n.SU)(l).records.find((t=>t.record_type===(0,n.SU)(o)))?((0,a.wg)(),(0,a.iD)("span",C,$)):(0,a.kq)("",!0)}});const x=(0,D.Z)(N,[["__scopeId","data-v-1a5282f6"]]);var z=x,L=o(9150),j=o(3649);const W=["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"],P=t=>{const e=Math.floor(t/22.5+.5);return W[e%16]},F={class:"wind"},B={class:"wind-bearing"},H=["title"];var M=(0,a.aZ)({__name:"WeatherWind",props:{weather:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,weather:l}=(0,n.BK)(e),{t:r}=(0,L.QT)();function i(t){return r(`workouts.WEATHER.WIND_DIRECTIONS.${P(t)}`)}return(t,e)=>((0,a.wg)(),(0,a.iD)("div",F,[(0,a.Uk)((0,s.zw)((0,n.SU)(j.Y2)((0,n.SU)(l).wind,(0,n.SU)(o)))+" ",1),(0,a._)("div",B,[(0,n.SU)(l).windBearing?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-long-arrow-down",style:(0,s.j5)({transform:`rotate(${(0,n.SU)(l).windBearing}deg)`}),"aria-hidden":"true",title:i((0,n.SU)(l).windBearing)},null,12,H)):(0,a.kq)("",!0)])]))}});const q=(0,D.Z)(M,[["__scopeId","data-v-40697ed1"]]);var Z=q;const G=t=>((0,a.dD)("data-v-807b431a"),t=t(),(0,a.Cn)(),t),K={key:0,id:"workout-weather"},V={class:"weather-table"},Y=G((()=>(0,a._)("th",null,null,-1))),X={class:"weather-th"},J=["src","alt","title"],Q={class:"weather-th"},tt=["src","alt","title"],et=["alt","title"],ot=["alt","title"],at=["alt","title"];var nt=(0,a.aZ)({__name:"WorkoutWeather",props:{workoutObject:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).weatherStart&&(0,n.SU)(l).weatherEnd?((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("table",V,[(0,a._)("thead",null,[(0,a._)("tr",null,[Y,(0,a._)("th",null,[(0,a._)("div",X,[(0,a.Uk)((0,s.zw)(t.$t("workouts.START"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherStart.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`)},null,8,J)])]),(0,a._)("th",null,[(0,a._)("div",Q,[(0,a.Uk)((0,s.zw)(t.$t("workouts.END"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherEnd.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`)},null,8,tt)])])])]),(0,a._)("tbody",null,[(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/temperature.svg",alt:t.$t("workouts.WEATHER.TEMPERATURE"),title:t.$t("workouts.WEATHER.TEMPERATURE")},null,8,et)]),(0,a._)("td",null,(0,s.zw)((0,n.SU)(j.x$)((0,n.SU)(l).weatherStart.temperature,(0,n.SU)(o))),1),(0,a._)("td",null,(0,s.zw)((0,n.SU)(j.x$)((0,n.SU)(l).weatherEnd.temperature,(0,n.SU)(o))),1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/pour-rain.svg",alt:t.$t("workouts.WEATHER.HUMIDITY"),title:t.$t("workouts.WEATHER.HUMIDITY")},null,8,ot)]),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherStart.humidity).toFixed(1))+"% ",1),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherEnd.humidity).toFixed(1))+"% ",1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/breeze.svg",alt:t.$t("workouts.WEATHER.WIND"),title:t.$t("workouts.WEATHER.WIND")},null,8,at)]),(0,a._)("td",null,[(0,a.Wm)(Z,{weather:(0,n.SU)(l).weatherStart,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])]),(0,a._)("td",null,[(0,a.Wm)(Z,{weather:(0,n.SU)(l).weatherEnd,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])])])])])])):(0,a.kq)("",!0)}});const lt=(0,D.Z)(nt,[["__scopeId","data-v-807b431a"]]);var rt=lt;const st=t=>((0,a.dD)("data-v-74c5993b"),t=t(),(0,a.Cn)(),t),it={id:"workout-info"},ut={class:"workout-data"},dt=st((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),ct={class:"label"},pt={class:"value"},mt={key:0},wt={class:"value"},kt={class:"value"},_t={class:"workout-data"},vt=st((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),ft={class:"label"},gt={class:"workout-data"},yt=st((()=>(0,a._)("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1))),St={class:"label"},Ut=st((()=>(0,a._)("br",null,null,-1))),ht={class:"label"},bt={key:0,class:"workout-data"},Tt=["alt"],Et={class:"label"},Dt=st((()=>(0,a._)("br",null,null,-1))),Ot={class:"label"},It={key:1,class:"workout-data"},At=st((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Ct={class:"label"},Rt=st((()=>(0,a._)("br",null,null,-1))),$t={class:"label"};var Nt=(0,a.aZ)({__name:"WorkoutData",props:{workoutObject:null,useImperialUnits:{type:Boolean},displayHARecord:{type:Boolean}},setup(t){const e=t,{displayHARecord:o,workoutObject:l,useImperialUnits:r}=(0,n.BK)(e),i=(0,a.Fl)((()=>"0:00:00"!==e.workoutObject.pauses&&null!==e.workoutObject.pauses));return(t,e)=>{const u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",it,[(0,a._)("div",ut,[dt,(0,a._)("span",ct,(0,s.zw)(t.$t("workouts.DURATION")),1),(0,a.Uk)(": "),(0,a._)("span",pt,(0,s.zw)((0,n.SU)(l).moving),1),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"LD"},null,8,["workoutObject"]),(0,n.SU)(i)?((0,a.wg)(),(0,a.iD)("div",mt,[(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.PAUSES"))+": ",1),(0,a._)("span",wt,(0,s.zw)((0,n.SU)(l).pauses),1),(0,a.Uk)(" - "+(0,s.zw)(t.$t("workouts.TOTAL_DURATION"))+": ",1),(0,a._)("span",kt,(0,s.zw)((0,n.SU)(l).duration)+")",1)])):(0,a.kq)("",!0)]),(0,a._)("div",_t,[vt,(0,a._)("span",ft,(0,s.zw)(t.$t("workouts.DISTANCE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).distance,digits:3,unitFrom:"km",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"FD"},null,8,["workoutObject"])]),(0,a._)("div",gt,[yt,(0,a._)("span",St,(0,s.zw)(t.$t("workouts.AVERAGE_SPEED")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).aveSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"AS"},null,8,["workoutObject"]),Ut,(0,a._)("span",ht,(0,s.zw)(t.$t("workouts.MAX_SPEED")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).maxSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"MS"},null,8,["workoutObject"])]),null!==(0,n.SU)(l).maxAlt&&null!==(0,n.SU)(l).minAlt?((0,a.wg)(),(0,a.iD)("div",bt,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:t.$t("workouts.ELEVATION")},null,8,Tt),(0,a._)("span",Et,(0,s.zw)(t.$t("workouts.MIN_ALTITUDE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).minAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),Dt,(0,a._)("span",Ot,(0,s.zw)(t.$t("workouts.MAX_ALTITUDE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).maxAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),null!==(0,n.SU)(l).ascent&&null!==(0,n.SU)(l).descent?((0,a.wg)(),(0,a.iD)("div",It,[At,(0,a._)("span",Ct,(0,s.zw)(t.$t("workouts.ASCENT")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).ascent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,n.SU)(o)?((0,a.wg)(),(0,a.j4)(z,{key:0,workoutObject:(0,n.SU)(l),recordType:"HA"},null,8,["workoutObject"])):(0,a.kq)("",!0),Rt,(0,a._)("span",$t,(0,s.zw)(t.$t("workouts.DESCENT")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).descent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),(0,a.Wm)(rt,{workoutObject:(0,n.SU)(l),useImperialUnits:(0,n.SU)(r)},null,8,["workoutObject","useImperialUnits"])])}}});const xt=(0,D.Z)(Nt,[["__scopeId","data-v-74c5993b"]]);var zt=xt;function Lt(t,e){return Array.from(t.getElementsByTagName(e))}function jt(t){return t?.normalize(),t&&t.textContent||""}function Wt(t,e,o){const a=t.getElementsByTagName(e),n=a.length?a[0]:null;return n&&o&&o(n),n}function Pt(t,e,o){const a={};if(!t)return a;const n=t.getElementsByTagName(e),l=n.length?n[0]:null;return l&&o?o(l,a):a}function Ft(t,e,o){const a=jt(Wt(t,e));return a&&o&&o(a)||{}}function Bt(t,e,o){const a=parseFloat(jt(Wt(t,e)));if(!isNaN(a))return a&&o&&o(a)||{}}function Ht(t,e,o){const a=parseFloat(jt(Wt(t,e)));if(!isNaN(a))return a&&o&&o(a),a}function Mt(t,e){const o={};for(const a of e)Ft(t,a,(t=>{o[a]=t}));return o}function qt(t){return 1===t?.nodeType}function Zt(t){return Pt(t,"line",(t=>{const e=Object.assign({},Ft(t,"color",(t=>({stroke:`#${t}`}))),Bt(t,"opacity",(t=>({"stroke-opacity":t}))),Bt(t,"width",(t=>({"stroke-width":96*t/25.4}))));return e}))}function Gt(t){let e=[];if(null===t)return e;for(const o of Array.from(t.childNodes)){if(!qt(o))continue;const t=Kt(o.nodeName);if("gpxtpx:TrackPointExtension"===t)e=e.concat(Gt(o));else{const a=jt(o);e.push([t,Vt(a)])}}return e}function Kt(t){return["heart","gpxtpx:hr","hr"].includes(t)?"heart":t}function Vt(t){const e=parseFloat(t);return isNaN(e)?t:e}function Yt(t){const e=[parseFloat(t.getAttribute("lon")||""),parseFloat(t.getAttribute("lat")||"")];if(isNaN(e[0])||isNaN(e[1]))return null;Ht(t,"ele",(t=>{e.push(t)}));const o=Wt(t,"time");return{coordinates:e,time:o?jt(o):null,extendedValues:Gt(Wt(t,"extensions"))}}function Xt(t){const e=Mt(t,["name","cmt","desc","type","time","keywords"]),o=Array.from(t.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(const n of o)n.parentNode?.parentNode===t&&(e[n.tagName.replace(":","_")]=jt(n));const a=Lt(t,"link");return a.length&&(e.links=a.map((t=>Object.assign({href:t.getAttribute("href")},Mt(t,["text","type"]))))),e}function Jt(t,e){const o=Lt(t,e),a=[],n=[],l={};for(let r=0;r1,r=Object.assign({_gpxType:"trk"},Xt(t),Zt(Wt(t,"extensions")),a.length?{coordinateProperties:{times:l?a:a[0]}}:{});for(const s of n){o.push(s.line),r.coordinateProperties||(r.coordinateProperties={});const t=r.coordinateProperties,e=Object.entries(s.extendedValues);for(let o=0;onew Array(t.line.length).fill(null)))),t[a][o]=r):t[a]=r}}return{type:"Feature",properties:r,geometry:l?{type:"MultiLineString",coordinates:o}:{type:"LineString",coordinates:o[0]}}}function ee(t){const e=Object.assign(Xt(t),Mt(t,["sym"])),o=Yt(t);return o?{type:"Feature",properties:e,geometry:{type:"Point",coordinates:o.coordinates}}:null}function*oe(t){for(const e of Lt(t,"trk")){const t=te(e);t&&(yield t)}for(const e of Lt(t,"rte")){const t=Qt(e);t&&(yield t)}for(const e of Lt(t,"wpt")){const t=ee(e);t&&(yield t)}}function ae(t){return{type:"FeatureCollection",features:Array.from(oe(t))}}Math.PI;const ne=(t,e=100)=>{let o;const a=function(...a){const n=this;o&&clearTimeout(o),o=setTimeout((()=>{t.apply(n,a),o=null}),e)};return a.cancel=function(){o&&clearTimeout(o)},a},le=function(t){for(const e of Object.values(t))e&&se(e.cancel)&&e.cancel()},re=t=>t&&"function"==typeof t.charAt?t.charAt(0).toUpperCase()+t.slice(1):t,se=t=>"function"==typeof t,ie=(t,e,o)=>{for(const n in o){const l="set"+re(n);t[l]?(0,a.YP)((()=>o[n]),((e,o)=>{t[l](e,o)})):e[l]&&(0,a.YP)((()=>o[n]),(t=>{e[l](t)}))}},ue=(t,e,o={})=>{const a={...o};for(const n in t){const o=e[n],l=t[n];o&&(o&&!0===o.custom||void 0!==l&&(a[n]=l))}return a},de=t=>{const e={};for(const o in t)if(o.startsWith("on")&&!o.startsWith("onUpdate")&&"onReady"!==o){const a=o.slice(2).toLocaleLowerCase();e[a]=t[o]}return e},ce=async t=>{const e=await Promise.all([o.e(431).then(o.t.bind(o,6431,17)),o.e(93).then(o.t.bind(o,7093,17)),o.e(858).then(o.t.bind(o,8858,17))]);delete t.Default.prototype._getIconUrl,t.Default.mergeOptions({iconRetinaUrl:e[0].default,iconUrl:e[1].default,shadowUrl:e[2].default})},pe=t=>{const e=(0,n.iH)((()=>console.warn(`Method ${t} has been invoked without being replaced`))),o=(...t)=>e.value(...t);return o.wrapped=e,(0,a.JJ)(t,o),o},me=(t,e)=>t.wrapped.value=e,we="object"==typeof self&&self.self===self&&self||"object"==typeof o.g&&o.g.global===o.g&&o.g||void 0,ke="useGlobalLeaflet",_e={options:{type:Object,default:()=>({}),custom:!0}},ve=t=>({options:t.options,methods:{}}),fe={..._e,pane:{type:String},attribution:{type:String},name:{type:String,custom:!0},layerType:{type:String,custom:!0},visible:{type:Boolean,custom:!0,default:!0}},ge=(t,e,o)=>{const n=(0,a.f3)("addLayer"),l=(0,a.f3)("removeLayer"),{options:r,methods:s}=ve(t),i=ue(t,fe,r),u=()=>n({leafletObject:e.value}),d=()=>l({leafletObject:e.value}),c={...s,setAttribution(o){d(),e.value.options.attribution=o,t.visible&&u()},setName(){d(),t.visible&&u()},setLayerType(){d(),t.visible&&u()},setVisible(t){e.value&&(t?u():d())},bindPopup({leafletObject:t}){e.value&&se(e.value.bindPopup)?e.value.bindPopup(t):console.warn("Attempt to bind popup before bindPopup method available on layer.")},bindTooltip({leafletObject:t}){e.value&&se(e.value.bindTooltip)?e.value.bindTooltip(t):console.warn("Attempt to bind tooltip before bindTooltip method available on layer.")},unbindTooltip(){e.value&&(se(e.value.closeTooltip)&&e.value.closeTooltip(),se(e.value.unbindTooltip)&&e.value.unbindTooltip())},unbindPopup(){e.value&&(se(e.value.closePopup)&&e.value.closePopup(),se(e.value.unbindPopup)&&e.value.unbindPopup())},updateVisibleProp(t){o.emit("update:visible",t)}};return(0,a.JJ)("bindPopup",c.bindPopup),(0,a.JJ)("bindTooltip",c.bindTooltip),(0,a.JJ)("unbindTooltip",c.unbindTooltip),(0,a.JJ)("unbindPopup",c.unbindPopup),(0,a.Ah)((()=>{c.unbindPopup(),c.unbindTooltip(),d()})),{options:i,methods:c}},ye=(t,e)=>{if(t&&e.default)return(0,a.h)("div",{style:{display:"none"}},e.default())},Se={...fe,interactive:{type:Boolean,default:void 0},bubblingMouseEvents:{type:Boolean,default:void 0}},Ue={...Se,stroke:{type:Boolean,default:void 0},color:{type:String},weight:{type:Number},opacity:{type:Number},lineCap:{type:String},lineJoin:{type:String},dashArray:{type:String},dashOffset:{type:String},fill:{type:Boolean,default:void 0},fillColor:{type:String},fillOpacity:{type:Number},fillRule:{type:String},className:{type:String}},he={...Ue,radius:{type:Number},latLng:{type:[Object,Array],required:!0,custom:!0}},be={..._e,position:{type:String}},Te=(t,e)=>{const{options:o,methods:n}=ve(t),l=ue(t,be,o),r={...n,setPosition(t){e.value&&e.value.setPosition(t)}};return(0,a.Ah)((()=>{e.value&&e.value.remove()})),{options:l,methods:r}},Ee=t=>t.default?(0,a.h)("div",{ref:"root"},t.default()):null,De={name:"LControl",props:{...be,disableClickPropagation:{type:Boolean,custom:!0,default:!0},disableScrollPropagation:{type:Boolean,custom:!0,default:!1}},setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(null),s=(0,a.f3)(ke),i=(0,a.f3)("registerControl"),{options:u,methods:d}=Te(t,l);return(0,a.bv)((async()=>{const{Control:c,DomEvent:p}=s?we.L:await o.e(633).then(o.bind(o,6633)),m=c.extend({onAdd(){return r.value}});l.value=(0,n.Xl)(new m(u)),ie(d,l.value,t),i({leafletObject:l.value}),t.disableClickPropagation&&p.disableClickPropagation(r.value),t.disableScrollPropagation&&p.disableScrollPropagation(r.value),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{root:r,leafletObject:l}},render(){return Ee(this.$slots)}},Oe=De,Ie={...be,collapsed:{type:Boolean,default:void 0},autoZIndex:{type:Boolean,default:void 0},hideSingleBase:{type:Boolean,default:void 0},sortLayers:{type:Boolean,default:void 0},sortFunction:{type:Function}},Ae=(t,e)=>{const{options:o}=Te(t,e);return{options:ue(t,Ie,o),methods:{addLayer(t){"base"===t.layerType?e.value.addBaseLayer(t.leafletObject,t.name):"overlay"===t.layerType&&e.value.addOverlay(t.leafletObject,t.name)},removeLayer(t){e.value.removeLayer(t.leafletObject)}}}},Ce={name:"LControlLayers",props:Ie,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ke),s=(0,a.f3)("registerLayerControl"),{options:i,methods:u}=Ae(t,l);return(0,a.bv)((async()=>{const{control:d}=r?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d.layers(null,null,i)),ie(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l}},render(){return null}},Re=Ce,$e=(Boolean,Boolean,Boolean,{...fe}),Ne=(t,e,o)=>{const{options:n,methods:l}=ge(t,e,o),r=ue(t,$e,n),s={...l,addLayer(t){e.value.addLayer(t.leafletObject)},removeLayer(t){e.value.removeLayer(t.leafletObject)}};return(0,a.JJ)("addLayer",s.addLayer),(0,a.JJ)("removeLayer",s.removeLayer),{options:r,methods:s}},xe={...$e,geojson:{type:[Object,Array],custom:!0},optionsStyle:{type:[Object,Function],custom:!0}},ze=(t,e,o)=>{const{options:a,methods:n}=Ne(t,e,o),l=ue(t,xe,a);Object.prototype.hasOwnProperty.call(t,"optionsStyle")&&(l.style=t.optionsStyle);const r={...n,setGeojson(t){e.value.clearLayers(),e.value.addData(t)},setOptionsStyle(t){e.value.setStyle(t)},getGeoJSONData(){return e.value.toGeoJSON()},getBounds(){return e.value.getBounds()}};return{options:l,methods:r}},Le={props:xe,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer"),{methods:u,options:d}=ze(t,l,e);return(0,a.bv)((async()=>{const{geoJSON:c,DomEvent:p}=s?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(c(t.geojson,d));const m=de(e.attrs);p.on(l.value,m),ie(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}},je=Le,We={...fe,opacity:{type:Number},zIndex:{type:Number},tileSize:{type:Number},noWrap:{type:Boolean,default:void 0},minZoom:{type:Number},maxZoom:{type:Number}},Pe=(t,e,o)=>{const{options:a,methods:n}=ge(t,e,o);return{options:ue(t,We,a),methods:{...n}}},Fe={iconUrl:{type:String},iconRetinaUrl:{type:String},iconSize:{type:[Object,Array]},iconAnchor:{type:[Object,Array]},popupAnchor:{type:[Object,Array]},tooltipAnchor:{type:[Object,Array]},shadowUrl:{type:String},shadowRetinaUrl:{type:String},shadowSize:{type:[Object,Array]},shadowAnchor:{type:[Object,Array]},bgPos:{type:[Object,Array]},className:{type:String}},Be={name:"LIcon",props:{...Fe,..._e},setup(t,e){const l=(0,n.iH)(null),r=(0,a.f3)(ke),s=(0,a.f3)("canSetParentHtml"),i=(0,a.f3)("setParentHtml"),u=(0,a.f3)("setIcon");let d,c,p,m,w;const k=(o,a,n)=>{const l=o&&o.innerHTML;if(!a)return void(n&&w&&s()&&i(l));const r=de(e.attrs);w&&c(w,r);const{options:k}=ve(t),_=ue(t,Fe,k);l&&(_.html=l),w=_.html?p(_):m(_),d(w,r),u(w)},_=()=>{(0,a.Y3)((()=>k(l.value,!0,!1)))},v=()=>{(0,a.Y3)((()=>k(l.value,!1,!0)))},f={setIconUrl:_,setIconRetinaUrl:_,setIconSize:_,setIconAnchor:_,setPopupAnchor:_,setTooltipAnchor:_,setShadowUrl:_,setShadowRetinaUrl:_,setShadowAnchor:_,setBgPos:_,setClassName:_,setHtml:_};return(0,a.bv)((async()=>{const{DomEvent:e,divIcon:a,icon:n}=r?we.L:await o.e(633).then(o.bind(o,6633));d=e.on,c=e.off,p=a,m=n,ie(f,{},t),new MutationObserver(v).observe(l.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),_()})),{root:l}},render(){const t=this.$slots.default?this.$slots.default():void 0;return(0,a.h)("div",{ref:"root"},t)}},He=Be,Me=(Boolean,Boolean,{props:$e,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer"),{methods:u}=Ne(t,l,e);return(0,a.bv)((async()=>{const{layerGroup:d,DomEvent:c}=s?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d(t.options));const p=de(e.attrs);c.on(l.value,p),ie(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}}),qe=Me,Ze={..._e,center:{type:[Object,Array]},bounds:{type:[Array,Object]},maxBounds:{type:[Array,Object]},zoom:{type:Number},minZoom:{type:Number},maxZoom:{type:Number},paddingBottomRight:{type:Array},paddingTopLeft:{type:Array},padding:{type:Array},worldCopyJump:{type:Boolean,default:void 0},crs:{type:[String,Object]},maxBoundsViscosity:{type:Number},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number},inertiaMaxSpeed:{type:Number},easeLinearity:{type:Number},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:void 0},useGlobalLeaflet:{type:Boolean,default:!0,custom:!0}},Ge={emits:["ready","update:zoom","update:center","update:bounds"],props:Ze,setup(t,e){const l=(0,n.iH)(null),r=(0,n.qj)({ready:!1,leafletRef:{},layersToAdd:[],layersInControl:[]}),{options:s}=ve(t),i=ue(t,Ze,s),u=pe("addLayer"),d=pe("removeLayer"),c=pe("registerControl"),p=pe("registerLayerControl");(0,a.JJ)(ke,t.useGlobalLeaflet);const m={moveEndHandler:ne((()=>{e.emit("update:zoom",r.leafletRef.getZoom()),e.emit("update:center",r.leafletRef.getCenter()),e.emit("update:bounds",r.leafletRef.getBounds())})),overlayAddHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!0)},overlayRemoveHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!1)}};(0,a.bv)((async()=>{t.useGlobalLeaflet&&(we.L=we.L||await o.e(243).then(o.t.bind(o,5243,23)));const{map:s,CRS:w,Icon:k,latLngBounds:_,latLng:v,DomEvent:f}=t.useGlobalLeaflet?we.L:await o.e(633).then(o.bind(o,6633));try{i.beforeMapMount&&await i.beforeMapMount()}catch(U){console.error(`The following error occurred running the provided beforeMapMount hook ${U.message}`)}await ce(k);const g="string"==typeof i.crs?w[i.crs]:i.crs;i.crs=g||w.EPSG3857;const y={addLayer(t){void 0!==t.layerType&&(void 0===r.layerControl?r.layersToAdd.push(t):r.layersInControl.find((e=>e.leafletObject._leaflet_id===t.leafletObject._leaflet_id))||(r.layerControl.addLayer(t),r.layersInControl.push(t))),!1!==t.visible&&r.leafletRef.addLayer(t.leafletObject)},removeLayer(t){void 0!==t.layerType&&(void 0===r.layerControl?r.layersToAdd=r.layersToAdd.filter((e=>e.name!==t.name)):(r.layerControl.removeLayer(t.leafletObject),r.layersInControl=r.layersInControl.filter((e=>e.leafletObject._leaflet_id!==t.leafletObject._leaflet_id)))),r.leafletRef.removeLayer(t.leafletObject)},registerLayerControl(t){r.layerControl=t,r.layersToAdd.forEach((t=>{r.layerControl.addLayer(t)})),r.layersToAdd=[],c(t)},registerControl(t){r.leafletRef.addControl(t.leafletObject)},setZoom(e){const o=r.leafletRef.getZoom();e!==o&&r.leafletRef.setZoom(e,{animate:!t.noBlockingAnimations&&null})},setPaddingBottomRight(t){r.paddingBottomRight=t},setPaddingTopLeft(t){r.paddingTopLeft=t},setPadding(t){r.padding=t},setCrs(t){const e=r.leafletRef.getBounds();r.leafletRef.options.crs=t,r.leafletRef.fitBounds(e,{animate:!1,padding:[0,0]})},fitBounds(t){r.leafletRef.fitBounds(t,{animate:!this.noBlockingAnimations&&null})},setBounds(t){if(!t)return;const e=_(t);e.isValid()&&!(r.lastSetBounds||r.leafletRef.getBounds()).equals(e,0)&&(r.lastSetBounds=e,r.leafletRef.fitBounds(e,this.fitBoundsOptions))},setCenter(t){if(null==t)return;const e=v(t),o=r.lastSetCenter||r.leafletRef.getCenter();(o.lat!==e.lat||o.lng!==e.lng)&&(r.lastSetCenter=e,r.leafletRef.panTo(e,{animate:!this.noBlockingAnimations&&null}))}};me(u,y.addLayer),me(d,y.removeLayer),me(c,y.registerControl),me(p,y.registerLayerControl),r.leafletRef=(0,n.Xl)(s(l.value,i)),ie(y,r.leafletRef,t);const S=de(e.attrs);r.leafletRef.on("moveend",m.moveEndHandler),r.leafletRef.on("overlayadd",m.overlayAddHandler),r.leafletRef.on("overlayremove",m.overlayRemoveHandler),f.on(r.leafletRef,S),r.ready=!0,(0,a.Y3)((()=>e.emit("ready",r.leafletRef)))})),(0,a.Jd)((()=>{le(m),r.leafletRef&&(r.leafletRef.off(),r.leafletRef.remove())}));const w=(0,a.Fl)((()=>r.leafletRef)),k=(0,a.Fl)((()=>r.ready));return{root:l,ready:k,leafletObject:w}},render(){return(0,a.h)("div",{style:{width:"100%",height:"100%"},ref:"root"},this.ready&&this.$slots.default?this.$slots.default():{})}},Ke=Ge,Ve=["Symbol(Comment)","Symbol(Text)"],Ye=["LTooltip","LPopup"],Xe={...fe,draggable:{type:Boolean,default:void 0},icon:{type:[Object]},zIndexOffset:{type:Number},latLng:{type:[Object,Array],custom:!0,required:!0}},Je=(t,e,o)=>{const{options:a,methods:n}=ge(t,e,o),l=ue(t,Xe,a),r={...n,setDraggable(t){e.value.dragging&&(t?e.value.dragging.enable():e.value.dragging.disable())},latLngSync(t){o.emit("update:latLng",t.latlng),o.emit("update:lat-lng",t.latlng)},setLatLng(t){if(null!=t&&e.value){const o=e.value.getLatLng();(!o||!o.equals(t))&&e.value.setLatLng(t)}}};return{options:l,methods:r}},Qe=(t,e)=>{const o=e.slots.default&&e.slots.default();return o&&o.length&&o.some(to)};function to(t){return!(Ve.includes(t.type.toString())||Ye.includes(t.type.name))}const eo={name:"LMarker",props:Xe,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer");(0,a.JJ)("canSetParentHtml",(()=>!!l.value.getElement())),(0,a.JJ)("setParentHtml",(t=>l.value.getElement().innerHTML=t)),(0,a.JJ)("setIcon",(t=>l.value.setIcon&&l.value.setIcon(t)));const{options:u,methods:d}=Je(t,l,e),c={moveHandler:ne(d.latLngSync)};return(0,a.bv)((async()=>{const{marker:p,DomEvent:m,divIcon:w}=s?we.L:await o.e(633).then(o.bind(o,6633));Qe(u,e)&&(u.icon=w({className:""})),l.value=(0,n.Xl)(p(t.latLng,u));const k=de(e.attrs);m.on(l.value,k),l.value.on("move",c.moveHandler),ie(d,l.value,t),i({...t,...d,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),(0,a.Jd)((()=>le(c))),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}},oo=eo,ao={...Ue,smoothFactor:{type:Number},noClip:{type:Boolean,default:void 0},latLngs:{type:Array,required:!0,custom:!0}},no={...ao},lo={..._e,content:{type:String,default:null}};no.latLngs.required=!1;const ro={...We,tms:{type:Boolean,default:void 0},subdomains:{type:[String,Array],validator:t=>"string"==typeof t||!!Array.isArray(t)&&t.every((t=>"string"==typeof t))},detectRetina:{type:Boolean,default:void 0},url:{type:String,required:!0,custom:!0}},so=(t,e,o)=>{const{options:a,methods:n}=Pe(t,e,o),l=ue(t,ro,a),r={...n};return{options:l,methods:r}},io={props:ro,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ke),s=(0,a.f3)("addLayer"),{options:i,methods:u}=so(t,l,e);return(0,a.bv)((async()=>{const{tileLayer:d,DomEvent:c}=r?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d(t.url,i));const p=de(e.attrs);c.on(l.value,p),ie(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l}},render(){return null}},uo=io;Boolean,Boolean;var co=(0,a.aZ)({__name:"CustomMarker",props:{markerCoordinates:null,isStart:{type:Boolean}},setup(t){const e=t,{isStart:o,markerCoordinates:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(oo),{key:0,"lat-lng":[(0,n.SU)(l).latitude,(0,n.SU)(l).longitude]},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(He),{"icon-url":`/img/workouts/${(0,n.SU)(o)?"start":"finish"}.svg`,iconSize:[15,15]},null,8,["icon-url"])])),_:1},8,["lat-lng"])):(0,a.kq)("",!0)}});const po=co;var mo=po,wo=o(5801),ko=o(9917),_o=o(2024);const vo=t=>((0,a.dD)("data-v-2aec89b0"),t=t(),(0,a.Cn)(),t),fo={id:"workout-map"},go={key:0,class:"leaflet-container"},yo={key:1},So=vo((()=>(0,a._)("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1))),Uo={key:1,class:"no-map"};var ho=(0,a.aZ)({__name:"index",props:{workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,ko.o)(),{workoutData:l,markerCoordinates:r}=(0,n.BK)(e),i=(0,n.iH)(null),u=(0,a.Fl)((()=>g())),d=(0,a.Fl)((()=>o.getters[wo.SY.GETTERS.APP_CONFIG])),c=(0,a.Fl)((()=>v(u))),p=(0,a.Fl)((()=>e.workoutData&&e.workoutData.gpx?_(e.workoutData.gpx):{})),m=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[0].latitude,longitude:e.workoutData.chartData[0].longitude}:{})),w=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[e.workoutData.chartData.length-1].latitude,longitude:e.workoutData.chartData[e.workoutData.chartData.length-1].longitude}:{})),k=(0,n.iH)(!1);function _(t){if(!t||""!==t)try{const e=ae((new DOMParser).parseFromString(t,"text/xml"));return{jsonData:e}}catch(e){return console.error("Invalid gpx content"),{}}return{}}function v(t){return[(t.value[0][0]+t.value[1][0])/2,(t.value[0][1]+t.value[1][1])/2]}function f(t){i.value?.leafletObject&&i.value?.leafletObject.fitBounds(t)}function g(){return e.workoutData?[[e.workoutData.workout.bounds[0],e.workoutData.workout.bounds[1]],[e.workoutData.workout.bounds[2],e.workoutData.workout.bounds[3]]]:[]}function y(){i.value?.leafletObject.fitBounds(g())}function S(){k.value=!k.value,k.value||setTimeout((()=>{y()}),100)}return(t,e)=>{const o=(0,a.up)("VFullscreen");return(0,a.wg)(),(0,a.iD)("div",fo,[(0,n.SU)(l).loading?((0,a.wg)(),(0,a.iD)("div",go)):((0,a.wg)(),(0,a.iD)("div",yo,[(0,n.SU)(l).workout.with_gpx?((0,a.wg)(),(0,a.j4)(o,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=t=>k.value=t)},{default:(0,a.w5)((()=>[(0,a._)("div",{class:(0,s.C_)(["leaflet-container",{"fullscreen-map":k.value}])},[(0,n.SU)(p).jsonData&&(0,n.SU)(c)&&2===(0,n.SU)(u).length?((0,a.wg)(),(0,a.j4)((0,n.SU)(Ke),{key:0,zoom:13,maxZoom:19,center:(0,n.SU)(c),bounds:(0,n.SU)(u),zoomAnimation:!1,ref_key:"workoutMap",ref:i,onReady:e[0]||(e[0]=t=>f((0,n.SU)(u)))},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(Re)),(0,a.Wm)((0,n.SU)(Oe),{position:"topleft",class:"map-control",onClick:y},{default:(0,a.w5)((()=>[So])),_:1}),(0,a.Wm)((0,n.SU)(Oe),{position:"topleft",class:"map-control",onClick:S},{default:(0,a.w5)((()=>[(0,a._)("i",{class:(0,s.C_)("fa fa-"+(k.value?"compress":"arrows-alt")),"aria-hidden":"true"},null,2)])),_:1}),(0,a.Wm)((0,n.SU)(uo),{url:`${(0,n.SU)(_o.k)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,attribution:(0,n.SU)(d).map_attribution,bounds:(0,n.SU)(u)},null,8,["url","attribution","bounds"]),(0,a.Wm)((0,n.SU)(je),{geojson:(0,n.SU)(p).jsonData},null,8,["geojson"]),(0,n.SU)(r).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(oo),{key:0,"lat-lng":[(0,n.SU)(r).latitude,(0,n.SU)(r).longitude]},null,8,["lat-lng"])):(0,a.kq)("",!0),(0,a.Wm)((0,n.SU)(qe),{name:t.$t("workouts.START_AND_FINISH"),"layer-type":"overlay"},{default:(0,a.w5)((()=>[(0,n.SU)(m).latitude?((0,a.wg)(),(0,a.j4)(mo,{key:0,markerCoordinates:(0,n.SU)(m),isStart:!0},null,8,["markerCoordinates"])):(0,a.kq)("",!0),(0,n.SU)(w).latitude?((0,a.wg)(),(0,a.j4)(mo,{key:1,markerCoordinates:(0,n.SU)(w),isStart:!1},null,8,["markerCoordinates"])):(0,a.kq)("",!0)])),_:1},8,["name"])])),_:1},8,["center","bounds"])):(0,a.kq)("",!0)],2)])),_:1},8,["modelValue"])):((0,a.wg)(),(0,a.iD)("div",Uo,(0,s.zw)(t.$t("workouts.NO_MAP")),1))]))])}}});const bo=(0,D.Z)(ho,[["__scopeId","data-v-2aec89b0"]]);var To=bo,Eo=o(6558);const Do={class:"workout-detail"};var Oo=(0,a.aZ)({__name:"index",props:{authUser:null,displaySegment:{type:Boolean},sports:null,workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,l.yj)(),r=(0,ko.o)(),{authUser:s,markerCoordinates:i,workoutData:u}=(0,n.BK)(e),d=(0,a.Fl)((()=>e.workoutData.workout)),c=(0,n.iH)(o.params.workoutId?+o.params.segmentId:null),p=(0,a.Fl)((()=>d.value.segments.length>0&&c.value?d.value.segments[+c.value-1]:null)),m=(0,n.iH)(!1),w=(0,a.Fl)((()=>e.sports?e.sports.find((t=>t.id===e.workoutData.workout.sport_id)):{})),k=(0,a.Fl)((()=>v(d.value,p.value)));function _(t,e,o){const a=e&&o&&1!==o?`/workouts/${t.id}/segment/${o-1}`:!e&&t.previous_workout?`/workouts/${t.previous_workout}`:null,n=e&&o&&oo.params.segmentId),(async t=>{t&&(c.value=+t)})),(t,e)=>{const o=(0,a.up)("Modal"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Do,[m.value?((0,a.wg)(),(0,a.j4)(o,{key:0,title:t.$t("common.CONFIRMATION"),message:t.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:e[0]||(e[0]=t=>g((0,n.SU)(k).workoutId)),onCancelAction:e[1]||(e[1]=t=>f(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Wm)(I,{sport:(0,n.SU)(w),workoutObject:(0,n.SU)(k),onDisplayModal:e[2]||(e[2]=t=>f(!0))},null,8,["sport","workoutObject"])])),content:(0,a.w5)((()=>[(0,a.Wm)(To,{workoutData:(0,n.SU)(u),markerCoordinates:(0,n.SU)(i)},null,8,["workoutData","markerCoordinates"]),(0,a.Wm)(zt,{workoutObject:(0,n.SU)(k),useImperialUnits:(0,n.SU)(s).imperial_units,displayHARecord:(0,n.SU)(s).display_ascent},null,8,["workoutObject","useImperialUnits","displayHARecord"])])),_:1})])}}});const Io=(0,D.Z)(Oo,[["__scopeId","data-v-9fc0bab8"]]);var Ao=Io,Co=o(6518);const Ro=t=>{const e=document.getElementById(t);if(e){let t=e.querySelector("ul");return t||(t=document.createElement("ul"),e.appendChild(t)),t}throw new Error("No legend container")},$o={id:"htmlLegend",afterUpdate(t,e,o){const a=Ro(o.containerID);while(a.firstChild)a.firstChild.remove();const n=t.options.plugins?.legend?.labels?.generateLabels?t.options.plugins?.legend?.labels?.generateLabels(t):[];n.forEach((e=>{const o=document.createElement("li");o.onclick=()=>{void 0!==e.datasetIndex&&(t.setDatasetVisibility(e.datasetIndex,!t.isDatasetVisible(e.datasetIndex)),t.update())};const n=document.createElement("input");n&&(n.type="checkbox",n.id=e.text,n.checked=!e.hidden);const l=document.createTextNode(e.text),r=document.createElement("span");r&&(r.style.background=String(e.fillStyle),r.style.borderColor=String(e.strokeStyle)),o.appendChild(n),o.appendChild(l),o.appendChild(r),a.appendChild(o)}))}};var No=o(3768);const xo=t=>((0,a.dD)("data-v-0b68c436"),t=t(),(0,a.Cn)(),t),zo={id:"workout-chart"},Lo={class:"chart-radio"},jo=["checked"],Wo=["checked"],Po=xo((()=>(0,a._)("div",{id:"chart-legend"},null,-1))),Fo={class:"chart-info"},Bo={class:"no-data-cleaning"},Ho={class:"elevation-start"},Mo=["checked"];var qo=(0,a.aZ)({__name:"index",props:{authUser:null,workoutData:null},emits:["getCoordinates"],setup(t,{emit:e}){const o=t,{t:l}=(0,L.QT)(),r=(0,n.iH)(!0),i=(0,n.iH)(!0),u=(0,a.Fl)((()=>(0,No.EX)(o.workoutData.chartData,l,o.authUser.imperial_units))),d=y("km"),c=y("m"),p=(0,a.Fl)((()=>({labels:r.value?u.value.distance_labels:u.value.duration_labels,datasets:JSON.parse(JSON.stringify([u.value.datasets.speed,u.value.datasets.elevation]))}))),m=(0,a.Fl)((()=>u.value.coordinates)),w=(0,a.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:22}},scales:{x:{grid:{drawOnChartArea:!1},ticks:{count:10,callback:function(t){return r.value?Number(t).toFixed(2):v(t)}},type:"linear",bounds:"data",title:{display:!0,text:r.value?l("workouts.DISTANCE")+` (${d})`:l("workouts.DURATION")}},ySpeed:{grid:{drawOnChartArea:!1},position:"left",title:{display:!0,text:l("workouts.SPEED")+` (${d}/h)`}},yElevation:{beginAtZero:i.value,grid:{drawOnChartArea:!1},position:"right",title:{display:!0,text:l("workouts.ELEVATION")+` (${c})`}}},elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(t){const e=` ${t.dataset.label}: ${t.formattedValue}`;return"yElevation"===t.dataset.yAxisID?e+` ${c}`:e+` ${d}/h`},title:function(t){return t.length>0&&f(m.value[t[0].dataIndex]),0===t.length?"":r.value?`${l("workouts.DISTANCE")}: ${t[0].label} ${d}`:`${l("workouts.DURATION")}: ${v(t[0].label.replace(",",""))}`}}},legend:{display:!1},htmlLegend:{containerID:"chart-legend"}}}))),{lineChartProps:k}=(0,Co.tn)({chartData:p,options:w,plugins:[$o]});function _(){r.value=!r.value}function v(t){return new Date(1e3*+t).toISOString().substr(11,8)}function f(t){e("getCoordinates",t)}function g(){f({latitude:null,longitude:null})}function y(t){return o.authUser.imperial_units?j.Dl[t].defaultTarget:t}return(t,e)=>{const o=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",zo,[(0,a.Wm)(o,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.ANALYSIS")),1)])),content:(0,a.w5)((()=>[(0,a._)("div",Lo,[(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"distance",checked:r.value,onClick:_},null,8,jo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DISTANCE")),1)]),(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"duration",checked:!r.value,onClick:_},null,8,Wo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DURATION")),1)])]),Po,(0,a.Wm)((0,n.SU)(Co.wW),(0,a.dG)((0,n.SU)(k),{class:"line-chart",onMouseleave:g}),null,16),(0,a._)("div",Fo,[(0,a._)("div",Bo,(0,s.zw)(t.$t("workouts.NO_DATA_CLEANING")),1),(0,a._)("div",Ho,[(0,a._)("label",null,[(0,a._)("input",{type:"checkbox",checked:i.value,onClick:e[0]||(e[0]=t=>i.value=!i.value)},null,8,Mo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.START_ELEVATION_AT_ZERO")),1)])])])])),_:1})])}}});const Zo=(0,D.Z)(qo,[["__scopeId","data-v-0b68c436"]]);var Go=Zo,Ko=o(2335);const Vo={id:"workout-note"},Yo=["innerHTML"];var Xo=(0,a.aZ)({__name:"WorkoutNotes",props:{notes:{default:()=>null}},setup(t){const e=t,{notes:o}=(0,n.BK)(e);return(t,e)=>{const l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.NOTES")),1)])),content:(0,a.w5)((()=>[(0,a._)("span",{innerHTML:(0,n.SU)(o)&&""!==(0,n.SU)(o)?(0,n.SU)(Ko.O)((0,n.SU)(o)):t.$t("workouts.NO_NOTES")},null,8,Yo)])),_:1})])}}});const Jo=(0,D.Z)(Xo,[["__scopeId","data-v-f6b59442"]]);var Qo=Jo;const ta={id:"workout-segments"};var ea=(0,a.aZ)({__name:"WorkoutSegments",props:{segments:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{segments:o,useImperialUnits:l}=(0,n.BK)(e);return(t,e)=>{const r=(0,a.up)("router-link"),i=(0,a.up)("Distance"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ta,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",2)),1)])),content:(0,a.w5)((()=>[(0,a._)("ul",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(o),((e,o)=>((0,a.wg)(),(0,a.iD)("li",{key:e.segment_id},[(0,a.Wm)(r,{to:{name:"WorkoutSegment",params:{workoutId:e.workout_id,segmentId:o+1}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",1))+" "+(0,s.zw)(o+1),1)])),_:2},1032,["to"]),(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.DISTANCE"))+": ",1),(0,a.Wm)(i,{distance:e.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(l)},null,8,["distance","useImperialUnits"]),(0,a.Uk)(", "+(0,s.zw)(t.$t("workouts.DURATION"))+": "+(0,s.zw)(e.duration)+") ",1)])))),128))])])),_:1})])}}});const oa=(0,D.Z)(ea,[["__scopeId","data-v-6b8a27cd"]]);var aa=oa;const na=t=>((0,a.dD)("data-v-53c4e53a"),t=t(),(0,a.Cn)(),t),la={id:"workout",class:"view"},ra={class:"container"},sa={key:0,class:"workout-container"},ia={key:0},ua=na((()=>(0,a._)("div",{id:"bottom"},null,-1))),da={key:1};var ca=(0,a.aZ)({__name:"Workout",props:{displaySegment:{type:Boolean}},setup(t){const e=t,o=(0,l.yj)(),s=(0,ko.o)(),{displaySegment:i}=(0,n.BK)(e),u=(0,a.Fl)((()=>s.getters[wo.aX.GETTERS.WORKOUT_DATA])),d=(0,a.Fl)((()=>s.getters[wo.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>s.getters[wo.O8.GETTERS.SPORTS])),p=(0,n.iH)({latitude:null,longitude:null});function m(t){p.value={latitude:t.latitude,longitude:t.longitude}}return(0,a.wF)((()=>{const t={workoutId:o.params.workoutId};e.displaySegment&&(t.segmentId=o.params.segmentId),s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,t)})),(0,a.Ah)((()=>{s.commit(wo.aX.MUTATIONS.EMPTY_WORKOUT)})),(0,a.YP)((()=>o.params.workoutId),(async t=>{t&&s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t})})),(0,a.YP)((()=>o.params.segmentId),(async t=>{if(o.params.workoutId){const e={workoutId:o.params.workoutId};t&&(e.segmentId=t),s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,e)}})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",la,[(0,a._)("div",ra,[(0,n.SU)(c).length>0?((0,a.wg)(),(0,a.iD)("div",sa,[(0,n.SU)(u).workout.id?((0,a.wg)(),(0,a.iD)("div",ia,[(0,a.Wm)(Ao,{workoutData:(0,n.SU)(u),sports:(0,n.SU)(c),authUser:(0,n.SU)(d),markerCoordinates:p.value,displaySegment:(0,n.SU)(i)},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment"]),(0,n.SU)(u).workout.with_gpx&&(0,n.SU)(u).chartData.length>0?((0,a.wg)(),(0,a.j4)(Go,{key:0,workoutData:(0,n.SU)(u),authUser:(0,n.SU)(d),displaySegment:(0,n.SU)(i),onGetCoordinates:m},null,8,["workoutData","authUser","displaySegment"])):(0,a.kq)("",!0),!(0,n.SU)(i)&&(0,n.SU)(u).workout.segments.length>1?((0,a.wg)(),(0,a.j4)(aa,{key:1,segments:(0,n.SU)(u).workout.segments,useImperialUnits:(0,n.SU)(d).imperial_units},null,8,["segments","useImperialUnits"])):(0,a.kq)("",!0),(0,n.SU)(i)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(Qo,{key:2,notes:(0,n.SU)(u).workout.notes},null,8,["notes"])),ua])):((0,a.wg)(),(0,a.iD)("div",da,[(0,n.SU)(u).loading?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(r.Z,{key:0,target:"WORKOUT"}))]))])):(0,a.kq)("",!0)])]))}});const pa=(0,D.Z)(ca,[["__scopeId","data-v-53c4e53a"]]);var ma=pa},9628:function(t,e,o){o.r(e),o.d(e,{default:function(){return Ft}});var a=o(6252),n=o(2262),l=o(3577),r=o(9150),s=(o(7658),o(2201)),i=o(631),u=o(3649);const d=t=>((0,a.dD)("data-v-6c38593a"),t=t(),(0,a.Cn)(),t),c={class:"workouts-filters"},p={class:"box"},m={class:"form"},w={class:"form-items-group"},k={class:"form-item"},_=["value"],v={class:"form-item"},f=["value"],g={class:"form-items-group"},y={class:"form-item"},S=["value"],U=d((()=>(0,a._)("option",{value:""},null,-1))),h=["value"],b={class:"form-items-group"},T={class:"form-item"},E={class:"form-inputs-group"},D=["value"],O=["value"],I={class:"form-items-group"},A={class:"form-item"},C={class:"form-inputs-group"},R=["value"],$=["value"],N={class:"form-items-group"},x={class:"form-item"},z={class:"form-inputs-group"},L=["value"],j=["value"],W={class:"form-items-group"},P={class:"form-item"},F={class:"form-inputs-group"},B=["value"],H=["value"],M={class:"form-button"};var q=(0,a.aZ)({__name:"WorkoutsFilters",props:{authUser:null,sports:null},emits:["filter"],setup(t,{emit:e}){const o=t,{t:d}=(0,r.QT)(),q=(0,s.yj)(),Z=(0,s.tv)(),{authUser:G}=(0,n.BK)(o),K=G.value.imperial_units?u.Dl.km.defaultTarget:"km",V=(0,a.Fl)((()=>(0,i.xH)(o.sports,d)));let Y=Object.assign({},q.query);function X(t){""===t.target.value?delete Y[t.target.name]:Y[t.target.name]=t.target.value}function J(){e("filter"),"page"in Y&&(Y["page"]="1"),Z.push({path:"/workouts",query:Y})}function Q(){e("filter"),Z.push({path:"/workouts",query:{}})}return(0,a.YP)((()=>q.query),(t=>{Y=Object.assign({},t)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",p,[(0,a._)("div",m,[(0,a._)("div",w,[(0,a._)("div",k,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.FROM"))+": ",1),(0,a._)("input",{name:"from",type:"date",value:t.$route.query.from,onChange:X},null,40,_)]),(0,a._)("div",v,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.TO"))+": ",1),(0,a._)("input",{name:"to",type:"date",value:t.$route.query.to,onChange:X},null,40,f)])]),(0,a._)("div",g,[(0,a._)("div",y,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.SPORT",1))+":",1),(0,a._)("select",{name:"sport_id",value:t.$route.query.sport_id,onChange:X},[U,((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(V).filter((t=>(0,n.SU)(G).sports_list.includes(t.id))),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,l.zw)(t.translatedLabel),9,h)))),128))],40,S)])]),(0,a._)("div",b,[(0,a._)("div",T,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,l.zw)((0,n.SU)(K))+"): ",1),(0,a._)("div",E,[(0,a._)("input",{name:"distance_from",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_from,onChange:X},null,40,D),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"distance_to",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_to,onChange:X},null,40,O)])])]),(0,a._)("div",I,[(0,a._)("div",A,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DURATION"))+": ",1),(0,a._)("div",C,[(0,a._)("input",{name:"duration_from",value:t.$route.query.duration_from,onChange:X,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,R),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"duration_to",value:t.$route.query.duration_to,onChange:X,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,$)])])]),(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.AVE_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",z,[(0,a._)("input",{min:"0",name:"ave_speed_from",value:t.$route.query.ave_speed_from,onChange:X,step:"0.1",type:"number"},null,40,L),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"ave_speed_to",value:t.$route.query.ave_speed_to,onChange:X,step:"0.1",type:"number"},null,40,j)])])]),(0,a._)("div",W,[(0,a._)("div",P,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.MAX_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",F,[(0,a._)("input",{min:"0",name:"max_speed_from",value:t.$route.query.max_speed_from,onChange:X,step:"0.1",type:"number"},null,40,B),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"max_speed_to",value:t.$route.query.max_speed_to,onChange:X,step:"0.1",type:"number"},null,40,H)])])])]),(0,a._)("div",M,[(0,a._)("button",{class:"confirm",onClick:J},(0,l.zw)(t.$t("buttons.FILTER")),1),(0,a._)("button",{class:"confirm",onClick:Q},(0,l.zw)(t.$t("buttons.CLEAR_FILTER")),1)])])]))}}),Z=o(3744);const G=(0,Z.Z)(q,[["__scopeId","data-v-6c38593a"]]);var K=G,V=o(8626),Y=o(5020),X=o(2056),J=o(5630),Q=o(5801),tt=o(9917),et=o(2766),ot=o(6558),at=o(3768);const nt=t=>((0,a.dD)("data-v-19504874"),t=t(),(0,a.Cn)(),t),lt={class:"workouts-list"},rt={class:"total"},st={class:"total-label"},it={key:0},ut={key:0,class:"workouts-table responsive-table"},dt=nt((()=>(0,a._)("th",{class:"sport-col"},null,-1))),ct={class:"sport-col"},pt={class:"cell-heading"},mt=["onMouseover"],wt={class:"cell-heading"},kt={key:0,class:"fa fa-map-o","aria-hidden":"true"},_t={class:"title"},vt={class:"workout-date"},ft={class:"cell-heading"},gt={class:"text-right"},yt={class:"cell-heading"},St={class:"text-right"},Ut={class:"cell-heading"},ht={class:"text-right"},bt={class:"cell-heading"},Tt={class:"text-right"},Et={class:"cell-heading"},Dt={class:"text-right"},Ot={class:"cell-heading"},It={class:"text-right"},At={class:"cell-heading"},Ct=nt((()=>(0,a._)("div",{id:"bottom"},null,-1)));var Rt=(0,a.aZ)({__name:"WorkoutsList",props:{user:null,sports:null},setup(t){const e=t,o=(0,tt.o)(),r=(0,s.yj)(),d=(0,s.tv)(),{user:c,sports:p}=(0,n.BK)(e),m=["ave_speed","distance","duration","workout_date"],w=(0,a.Fl)((()=>o.getters[Q.aX.GETTERS.USER_WORKOUTS])),k=(0,a.Fl)((()=>o.getters[Q.aX.GETTERS.WORKOUTS_PAGINATION])),_=(0,a.Fl)((()=>o.getters[Q.SY.GETTERS.LANGUAGE]));let v=S(r.query);const f=(0,n.iH)(null);function g(t){o.dispatch(Q.aX.ACTIONS.GET_USER_WORKOUTS,c.value.imperial_units?U(t):t)}function y(t,e){const o=Object.assign({},r.query);o[t]=e,"per_page"===t&&(o["page"]="1"),v=S(o),d.push({path:"/workouts",query:v})}function S(t){const e=(0,et.pm)(t,m,at.eR.order_by,{defaultSort:at.eR.order});return Object.keys(t).filter((t=>et.Ne.includes(t))).map((o=>{"string"===typeof t[o]&&(e[o]=t[o])})),e}function U(t){const e={...t};return Object.entries(e).map((t=>{t[0].match("speed|distance")&&t[1]&&(e[t[0]]=(0,u.sC)(+t[1],"mi","km"))})),e}function h(t){f.value=t}return(0,a.wF)((()=>{g(v)})),(0,a.YP)((()=>r.query),(async t=>{v=S(t),g(v)})),(t,e)=>{const o=(0,a.up)("SportImage"),r=(0,a.up)("router-link"),s=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",lt,[(0,a._)("div",{class:(0,l.C_)(["box",{"empty-table":0===(0,n.SU)(w).length}])},[(0,a._)("div",rt,[(0,a._)("span",st,(0,l.zw)(t.$t("common.TOTAL").toLowerCase())+": ",1),null!==(0,n.SU)(k).total?((0,a.wg)(),(0,a.iD)("span",it,(0,l.zw)((0,n.SU)(k).total)+" "+(0,l.zw)(t.$t("workouts.WORKOUT",(0,n.SU)(k).total)),1)):(0,a.kq)("",!0)]),(0,a.Wm)(V.Z,{sort:(0,n.SU)(et.fS),order_by:m,query:(0,n.SU)(v),message:"workouts",onUpdateSelect:y},null,8,["sort","query"]),(0,n.SU)(w).length>0?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Wm)(Y.Z,{class:"top-pagination",pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(v)},null,8,["pagination","query"]),(0,a._)("table",null,[(0,a._)("thead",{class:(0,l.C_)({smaller:"de"===(0,n.SU)(_)})},[(0,a._)("tr",null,[dt,(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DATE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DISTANCE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DURATION"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.AVE_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.MAX_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.ASCENT"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DESCENT"))),1)])],2),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(w),(u=>((0,a.wg)(),(0,a.iD)("tr",{key:u.id},[(0,a._)("td",ct,[(0,a._)("span",pt,(0,l.zw)(t.$t("workouts.SPORT",1)),1),(0,n.SU)(p).length>0?((0,a.wg)(),(0,a.j4)(o,{key:0,title:(0,n.SU)(p).find((t=>t.id===u.sport_id)).translatedLabel,"sport-label":(0,n.SU)(i.PA)(u,(0,n.SU)(p)),color:(0,n.SU)(i.CM)(u,(0,n.SU)(p))},null,8,["title","sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("td",{class:"workout-title",onMouseover:t=>h(u.id),onMouseleave:e[0]||(e[0]=t=>h(null))},[(0,a._)("span",wt,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a.Wm)(r,{class:"nav-item",to:{name:"Workout",params:{workoutId:u.id}}},{default:(0,a.w5)((()=>[u.with_gpx?((0,a.wg)(),(0,a.iD)("i",kt)):(0,a.kq)("",!0),(0,a._)("span",_t,(0,l.zw)(u.title),1)])),_:2},1032,["to"]),u.with_gpx&&f.value===u.id?((0,a.wg)(),(0,a.j4)(X.Z,{key:0,workout:u,"display-hover":!0},null,8,["workout"])):(0,a.kq)("",!0)],40,mt),(0,a._)("td",vt,[(0,a._)("span",ft,(0,l.zw)(t.$t("workouts.DATE")),1),(0,a.Uk)(" "+(0,l.zw)((0,n.SU)(ot.p6)(u.workout_date,(0,n.SU)(c).timezone,(0,n.SU)(c).date_format)),1)]),(0,a._)("td",gt,[(0,a._)("span",yt,(0,l.zw)(t.$t("workouts.DISTANCE")),1),(0,a.Wm)(s,{distance:u.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",St,[(0,a._)("span",Ut,(0,l.zw)(t.$t("workouts.DURATION")),1),(0,a.Uk)(" "+(0,l.zw)(u.moving),1)]),(0,a._)("td",ht,[(0,a._)("span",bt,(0,l.zw)(t.$t("workouts.AVE_SPEED")),1),(0,a.Wm)(s,{distance:u.ave_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Tt,[(0,a._)("span",Et,(0,l.zw)(t.$t("workouts.MAX_SPEED")),1),(0,a.Wm)(s,{distance:u.max_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Dt,[(0,a._)("span",Ot,(0,l.zw)(t.$t("workouts.ASCENT")),1),null!==u.ascent?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.ascent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,a._)("td",It,[(0,a._)("span",At,(0,l.zw)(t.$t("workouts.DESCENT")),1),null!==u.descent?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.descent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])))),128))])]),(0,a.Wm)(Y.Z,{pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(v)},null,8,["pagination","query"])])):(0,a.kq)("",!0)],2),0===(0,n.SU)(w).length?((0,a.wg)(),(0,a.j4)(J.Z,{key:0})):(0,a.kq)("",!0),Ct])}}});const $t=(0,Z.Z)(Rt,[["__scopeId","data-v-19504874"]]);var Nt=$t;const xt={key:0,id:"workouts",class:"view"},zt={class:"container workouts-container"},Lt={class:"display-filters"},jt={class:"list-container"};var Wt=(0,a.aZ)({__name:"WorkoutsView",setup(t){const{t:e}=(0,r.QT)(),o=(0,tt.o)(),s=(0,a.Fl)((()=>o.getters[Q.YN.GETTERS.AUTH_USER_PROFILE])),u=(0,a.Fl)((()=>o.getters[Q.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>(0,i.xH)(u.value,e))),c=(0,n.iH)(!0);function p(){c.value=!c.value}return(t,e)=>(0,n.SU)(s).username?((0,a.wg)(),(0,a.iD)("div",xt,[(0,a._)("div",zt,[(0,a._)("div",{class:(0,l.C_)(["filters-container",{hidden:c.value}])},[(0,a.Wm)(K,{sports:(0,n.SU)(d),authUser:(0,n.SU)(s),onFilter:p},null,8,["sports","authUser"])],2),(0,a._)("div",Lt,[(0,a._)("div",{onClick:p},[(0,a._)("i",{class:(0,l.C_)("fa fa-caret-"+(c.value?"down":"up")),"aria-hidden":"true"},null,2),(0,a._)("span",null,(0,l.zw)(t.$t(`workouts.${c.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),(0,a._)("div",jt,[(0,a.Wm)(Nt,{user:(0,n.SU)(s),sports:(0,n.SU)(d)},null,8,["user","sports"])])])])):(0,a.kq)("",!0)}});const Pt=(0,Z.Z)(Wt,[["__scopeId","data-v-57ec0168"]]);var Ft=Pt}}]); -//# sourceMappingURL=workouts.0fd5b207.js.map \ No newline at end of file +//# sourceMappingURL=workouts.a06ab85f.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.0fd5b207.js.map b/fittrackee/dist/static/js/workouts.a06ab85f.js.map similarity index 99% rename from fittrackee/dist/static/js/workouts.0fd5b207.js.map rename to fittrackee/dist/static/js/workouts.a06ab85f.js.map index 73ce0997..88f63874 100644 --- a/fittrackee/dist/static/js/workouts.0fd5b207.js.map +++ b/fittrackee/dist/static/js/workouts.a06ab85f.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/workouts.0fd5b207.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-45d3bf87\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = { class: \"workout-data\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = [\"disabled\"]\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = [\"disabled\"]\nconst _hoisted_36 = { class: \"form-item\" }\nconst _hoisted_37 = { key: 1 }\nconst _hoisted_38 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_39 = [\"disabled\"]\nconst _hoisted_40 = [\"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout };\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n workoutAscent: '',\n workoutDescent: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n const payloadErrorMessages: Ref = ref([])\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 3)\n : parseFloat(workout.distance.toFixed(3))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n workoutForm.workoutAscent =\n workout.ascent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.ascent, 'm', 'ft', 2)\n : parseFloat(workout.ascent.toFixed(2))\n }`\n workoutForm.workoutDescent =\n workout.descent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.descent, 'm', 'ft', 2)\n : parseFloat(workout.descent.toFixed(2))\n }`\n }\n }\n function isDistanceInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')\n }\n function isDurationInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')\n }\n function isElevationInvalid() {\n return payloadErrorMessages.value.includes(\n 'workouts.INVALID_ASCENT_OR_DESCENT'\n )\n }\n function formatPayload(payload: IWorkoutForm) {\n payloadErrorMessages.value = []\n payload.title = workoutForm.title\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n if (payload.duration <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DURATION')\n }\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n if (payload.distance <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')\n }\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n payload.ascent =\n workoutForm.workoutAscent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)\n : +workoutForm.workoutAscent\n payload.descent =\n workoutForm.workoutDescent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)\n : +workoutForm.workoutDescent\n if (\n (payload.ascent !== null && payload.descent === null) ||\n (payload.ascent === null && payload.descent !== null)\n ) {\n payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')\n }\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n }\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \"*: \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \"*: \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \"*:\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 42, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 42, _hoisted_27), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 42, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \")*: \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isDistanceInvalid() }),\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 42, _hoisted_31), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.ASCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-ascent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((workoutForm.workoutAscent) = $event))\n }, null, 42, _hoisted_33), [\n [_vModelText, workoutForm.workoutAscent]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DESCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-descent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((workoutForm.workoutDescent) = $event))\n }, null, 42, _hoisted_35), [\n [_vModelText, workoutForm.workoutDescent]\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_39),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_40)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=45d3bf87&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-45d3bf87\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"workout-date\" }\nconst _hoisted_12 = { class: \"workout-link\" }\nconst _hoisted_13 = [\"title\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n };\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _createTextVNode(\" — \"),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_12, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_15, 10, _hoisted_13)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n };\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40697ed1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { getWindSpeed } from '@/utils/units'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createTextVNode(_toDisplayString(_unref(getWindSpeed)(_unref(weather).wind, _unref(useImperialUnits))) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=40697ed1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-40697ed1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-807b431a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n import { getTemperature } from '@/utils/units'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherStart.temperature,\n _unref(useImperialUnits)\n )), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherEnd.temperature,\n _unref(useImperialUnits)\n )), 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=807b431a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-807b431a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = { class: \"value\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"value\" }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"workout-data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"label\" }\nconst _hoisted_12 = { class: \"workout-data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = { class: \"label\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_18 = [\"alt\"]\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_21 = { class: \"label\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = { class: \"label\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n };\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\": \"),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_18),\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_20,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIconHref(node) {\n return get(node, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n });\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), extractIconHref(iconStyle));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst toNumber = (x) => Number(x);\nconst typeConverters = {\n string: (x) => x,\n int: toNumber,\n uint: toNumber,\n short: toNumber,\n ushort: toNumber,\n float: toNumber,\n double: toNumber,\n bool: (x) => Boolean(x),\n};\nfunction extractExtendedData(node, schema) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n const name = simpleData.getAttribute(\"name\") || \"\";\n const typeConverter = schema[name] || typeConverters.string;\n properties[name] = typeConverter(nodeVal(simpleData));\n }\n return properties;\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n let geometries = [];\n let coordTimes = [];\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes.item(i);\n if (isElement(child)) {\n switch (child.tagName) {\n case \"MultiGeometry\":\n case \"MultiTrack\":\n case \"gx:MultiTrack\": {\n const childGeometries = getGeometry(child);\n geometries = geometries.concat(childGeometries.geometries);\n coordTimes = coordTimes.concat(childGeometries.coordTimes);\n break;\n }\n case \"Point\": {\n const coordinates = coord1(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LinearRing\":\n case \"LineString\": {\n const coordinates = coord(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(child, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(child);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction getPlacemark(node, styleMap, schema) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getGroundOverlayBox(node) {\n const latLonQuad = get1(node, \"gx:LatLonQuad\");\n if (latLonQuad) {\n const ring = fixRing(coord(getCoordinates(node)));\n return {\n type: \"Polygon\",\n coordinates: [ring],\n };\n }\n return getLatLonBox(node);\n}\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction rotateBox(bbox, coordinates, rotation) {\n const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];\n return [\n coordinates[0].map((coordinate) => {\n const dy = coordinate[1] - center[1];\n const dx = coordinate[0] - center[0];\n const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));\n const angle = Math.atan2(dy, dx) - rotation * DEGREES_TO_RADIANS;\n return [\n center[0] + Math.cos(angle) * distance,\n center[1] + Math.sin(angle) * distance,\n ];\n }),\n ];\n}\nfunction getLatLonBox(node) {\n const latLonBox = get1(node, \"LatLonBox\");\n if (latLonBox) {\n const north = num1(latLonBox, \"north\");\n const west = num1(latLonBox, \"west\");\n const east = num1(latLonBox, \"east\");\n const south = num1(latLonBox, \"south\");\n const rotation = num1(latLonBox, \"rotation\");\n if (typeof north === \"number\" &&\n typeof south === \"number\" &&\n typeof west === \"number\" &&\n typeof east === \"number\") {\n const bbox = [west, south, east, north];\n let coordinates = [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north], // top left (again)\n ],\n ];\n if (typeof rotation === \"number\") {\n coordinates = rotateBox(bbox, coordinates, rotation);\n }\n return {\n type: \"Polygon\",\n coordinates,\n };\n }\n }\n return null;\n}\nfunction getGroundOverlay(node, styleMap, schema) {\n const geometry = getGroundOverlayBox(node);\n const feature = {\n type: \"Feature\",\n geometry,\n properties: Object.assign(\n /**\n * Related to\n * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46\n */\n { \"@geometry-type\": \"groundoverlay\" }, getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractIconHref(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node)),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nfunction buildSchema(node) {\n const schema = {};\n for (const field of $(node, \"SimpleField\")) {\n schema[field.getAttribute(\"name\") || \"\"] =\n typeConverters[field.getAttribute(\"type\") || \"\"] ||\n typeConverters[\"string\"];\n }\n return schema;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n *\n * ### GroundOverlay\n *\n * GroundOverlay elements are converted into\n * `Feature` objects with `Polygon` geometries,\n * a property like:\n *\n * ```json\n * {\n * \"@geometry-type\": \"groundoverlay\"\n * }\n * ```\n *\n * And the ground overlay's image URL in the `href`\n * property. Ground overlays will need to be displayed\n * with a separate method to other features, depending\n * on which map framework you're using.\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"GroundOverlay\": {\n const placemark = getGroundOverlay(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap, schema);\n if (feature)\n yield feature;\n }\n for (const groundOverlay of $(node, \"GroundOverlay\")) {\n const feature = getGroundOverlay(groundOverlay, styleMap, schema);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch as ne, ref as y, provide as T, h as I, inject as c, onUnmounted as Y, onBeforeUnmount as U, onMounted as b, markRaw as _, nextTick as f, render as Ae, reactive as we, computed as se } from \"vue\";\nconst le = (t, o = 100) => {\n let e;\n const n = function(...r) {\n const s = this;\n e && clearTimeout(e), e = setTimeout(() => {\n t.apply(s, r), e = null;\n }, o);\n };\n return n.cancel = function() {\n e && clearTimeout(e);\n }, n;\n}, ie = function(t) {\n for (const o of Object.values(t))\n o && M(o.cancel) && o.cancel();\n}, Ge = (t) => !t || typeof t.charAt != \"function\" ? t : t.charAt(0).toUpperCase() + t.slice(1), M = (t) => typeof t == \"function\", h = (t, o, e) => {\n for (const n in e) {\n const r = \"set\" + Ge(n);\n t[r] ? ne(\n () => e[n],\n (s, l) => {\n t[r](s, l);\n }\n ) : o[r] && ne(\n () => e[n],\n (s) => {\n o[r](s);\n }\n );\n }\n}, L = (t, o, e = {}) => {\n const n = { ...e };\n for (const r in t) {\n const s = o[r], l = t[r];\n s && (s && s.custom === !0 || l !== void 0 && (n[r] = l));\n }\n return n;\n}, S = (t) => {\n const o = {};\n for (const e in t)\n if (e.startsWith(\"on\") && !e.startsWith(\"onUpdate\") && e !== \"onReady\") {\n const n = e.slice(2).toLocaleLowerCase();\n o[n] = t[e];\n }\n return o;\n}, Me = async (t) => {\n const o = await Promise.all([\n import(\"leaflet/dist/images/marker-icon-2x.png\"),\n import(\"leaflet/dist/images/marker-icon.png\"),\n import(\"leaflet/dist/images/marker-shadow.png\")\n ]);\n delete t.Default.prototype._getIconUrl, t.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, q = (t) => {\n const o = y(\n () => console.warn(`Method ${t} has been invoked without being replaced`)\n ), e = (...n) => o.value(...n);\n return e.wrapped = o, T(t, e), e;\n}, J = (t, o) => t.wrapped.value = o, v = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || void 0, g = \"useGlobalLeaflet\", z = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, F = (t) => ({ options: t.options, methods: {} }), k = {\n ...z,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, Z = (t, o, e) => {\n const n = c(\"addLayer\"), r = c(\"removeLayer\"), {\n options: s,\n methods: l\n } = F(t), a = L(t, k, s), i = () => n({ leafletObject: o.value }), u = () => r({ leafletObject: o.value }), p = {\n ...l,\n setAttribution(m) {\n u(), o.value.options.attribution = m, t.visible && i();\n },\n setName() {\n u(), t.visible && i();\n },\n setLayerType() {\n u(), t.visible && i();\n },\n setVisible(m) {\n o.value && (m ? i() : u());\n },\n bindPopup({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(m);\n },\n bindTooltip({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(m);\n },\n unbindTooltip() {\n o.value && (M(o.value.closeTooltip) && o.value.closeTooltip(), M(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (M(o.value.closePopup) && o.value.closePopup(), M(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(m) {\n e.emit(\"update:visible\", m);\n }\n };\n return T(\"bindPopup\", p.bindPopup), T(\"bindTooltip\", p.bindTooltip), T(\"unbindTooltip\", p.unbindTooltip), T(\"unbindPopup\", p.unbindPopup), Y(() => {\n p.unbindPopup(), p.unbindTooltip(), u();\n }), { options: a, methods: p };\n}, A = (t, o) => {\n if (t && o.default)\n return I(\"div\", { style: { display: \"none\" } }, o.default());\n}, ue = {\n ...k,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ie = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(\n t,\n ue,\n n\n ), methods: r };\n}, V = {\n ...ue,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, ce = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = Ie(t, o, e), s = L(\n t,\n V,\n n\n ), l = c(\"removeLayer\"), a = {\n ...r,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return U(() => {\n l({ leafletObject: o.value });\n }), { options: s, methods: a };\n}, x = {\n ...V,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, de = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, x, n), l = {\n ...r,\n setRadius(a) {\n o.value.setRadius(a);\n },\n setLatLng(a) {\n o.value.setLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, pe = {\n ...x,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, Ne = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = de(t, o, e), s = L(\n t,\n pe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, ke = {\n name: \"LCircle\",\n props: pe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ne(t, e, o);\n return b(async () => {\n const { circle: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, jt = ke, De = {\n name: \"LCircleMarker\",\n props: x,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = de(\n t,\n e,\n o\n );\n return b(async () => {\n const { circleMarker: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Pt = De, D = {\n ...z,\n position: {\n type: String\n }\n}, W = (t, o) => {\n const {\n options: e,\n methods: n\n } = F(t), r = L(t, D, e), s = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return Y(() => {\n o.value && o.value.remove();\n }), { options: r, methods: s };\n}, Ee = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, He = {\n name: \"LControl\",\n props: {\n ...D,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"registerControl\"), { options: l, methods: a } = W(t, e);\n return b(async () => {\n const { Control: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), p = i.extend({\n onAdd() {\n return n.value;\n }\n });\n e.value = _(new p(l)), h(a, e.value, t), s({ leafletObject: e.value }), t.disableClickPropagation && u.disableClickPropagation(n.value), t.disableScrollPropagation && u.disableScrollPropagation(n.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Ee(this.$slots);\n }\n}, Bt = He, ye = {\n ...D,\n prefix: {\n type: String\n }\n}, Ue = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n ), r = L(\n t,\n ye,\n e\n ), s = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: r, methods: s };\n}, ze = {\n name: \"LControlAttribution\",\n props: ye,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Ue(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.attribution(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Tt = ze, me = {\n ...D,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, Fe = (t, o) => {\n const { options: e } = W(t, o);\n return { options: L(\n t,\n me,\n e\n ), methods: {\n addLayer(s) {\n s.layerType === \"base\" ? o.value.addBaseLayer(s.leafletObject, s.name) : s.layerType === \"overlay\" && o.value.addOverlay(s.leafletObject, s.name);\n },\n removeLayer(s) {\n o.value.removeLayer(s.leafletObject);\n }\n } };\n}, Ze = {\n name: \"LControlLayers\",\n props: me,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerLayerControl\"), { options: s, methods: l } = Fe(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.layers(null, null, s)), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, $t = Ze, ve = {\n ...D,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, We = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n ve,\n e\n ), methods: n };\n}, qe = {\n name: \"LControlScale\",\n props: ve,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = We(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.scale(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, At = qe, fe = {\n ...D,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, Je = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n fe,\n e\n ), methods: n };\n}, Ke = {\n name: \"LControlZoom\",\n props: fe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Je(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.zoom(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, wt = Ke, K = {\n ...k\n}, R = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, K, n), l = {\n ...r,\n addLayer(a) {\n o.value.addLayer(a.leafletObject);\n },\n removeLayer(a) {\n o.value.removeLayer(a.leafletObject);\n }\n };\n return T(\"addLayer\", l.addLayer), T(\"removeLayer\", l.removeLayer), { options: s, methods: l };\n}, Le = {\n ...K\n}, Qe = (t, o) => {\n const { options: e, methods: n } = R(\n t,\n o\n ), r = L(t, Le, e), s = {\n ...n\n };\n return { options: r, methods: s };\n}, Xe = {\n props: Le,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Qe(t, e);\n return b(async () => {\n const { featureGroup: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Gt = Xe, be = {\n ...K,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: [Object, Function],\n custom: !0\n }\n}, Ye = (t, o, e) => {\n const { options: n, methods: r } = R(\n t,\n o,\n e\n ), s = L(t, be, n);\n Object.prototype.hasOwnProperty.call(t, \"optionsStyle\") && (s.style = t.optionsStyle);\n const l = {\n ...r,\n setGeojson(a) {\n o.value.clearLayers(), o.value.addData(a);\n },\n setOptionsStyle(a) {\n o.value.setStyle(a);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: s, methods: l };\n}, Ve = {\n props: be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Ye(t, e, o);\n return b(async () => {\n const { geoJSON: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.geojson, a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Mt = Ve, ee = {\n ...k,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: Number\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n }\n}, he = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(t, ee, n), methods: { ...r } };\n}, xe = {\n props: {\n ...ee,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(t, o) {\n const e = y({}), n = y({}), r = y(null), s = y(!1), l = c(g), a = c(\"addLayer\"), { options: i, methods: u } = he(t, e, o);\n return b(async () => {\n const { GridLayer: p, DomEvent: m, DomUtil: $ } = l ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n u.onUnload = (B) => {\n const j = e.value._tileCoordsToKey(B.coords);\n n[j] && (n[j].innerHTML = \"\", n[j] = void 0);\n }, u.setTileComponent = () => {\n e.value.redraw();\n };\n const O = p.extend({\n createTile(B) {\n const j = e.value._tileCoordsToKey(B);\n n[j] = $.create(\"div\");\n let G = I(\n { setup: t.childRender, props: [\"coords\"] },\n { coords: B }\n );\n return Ae(G, n[j]), n[j];\n }\n });\n e.value = _(new O(i));\n const P = S(o.attrs);\n m.on(e.value, P), e.value.on(\"tileunload\", u.onUnload), h(u, e.value, t), a({\n ...t,\n ...u,\n leafletObject: e.value\n }), s.value = !0, f(() => o.emit(\"ready\", e.value));\n }), Y(() => {\n e.value.off(\"tileunload\", u.onUnload);\n }), { root: r, ready: s, leafletObject: e };\n },\n render() {\n return this.ready ? I(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}, It = xe, ae = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, Re = {\n name: \"LIcon\",\n props: {\n ...ae,\n ...z\n },\n setup(t, o) {\n const e = y(null), n = c(g), r = c(\"canSetParentHtml\"), s = c(\"setParentHtml\"), l = c(\"setIcon\");\n let a, i, u, p, m;\n const $ = (j, G, E) => {\n const N = j && j.innerHTML;\n if (!G) {\n E && m && r() && s(N);\n return;\n }\n const w = S(o.attrs);\n m && i(m, w);\n const { options: X } = F(t), d = L(t, ae, X);\n N && (d.html = N), m = d.html ? u(d) : p(d), a(m, w), l(m);\n }, O = () => {\n f(() => $(e.value, !0, !1));\n }, P = () => {\n f(() => $(e.value, !1, !0));\n }, B = {\n setIconUrl: O,\n setIconRetinaUrl: O,\n setIconSize: O,\n setIconAnchor: O,\n setPopupAnchor: O,\n setTooltipAnchor: O,\n setShadowUrl: O,\n setShadowRetinaUrl: O,\n setShadowAnchor: O,\n setBgPos: O,\n setClassName: O,\n setHtml: O\n };\n return b(async () => {\n const { DomEvent: j, divIcon: G, icon: E } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n a = j.on, i = j.off, u = G, p = E, h(B, {}, t), new MutationObserver(P).observe(e.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), O();\n }), { root: e };\n },\n render() {\n const t = this.$slots.default ? this.$slots.default() : void 0;\n return I(\"div\", { ref: \"root\" }, t);\n }\n}, Nt = Re, ge = {\n ...k,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, et = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, ge, n), l = {\n ...r,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(a) {\n return o.value.setOpacity(a);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(a) {\n return o.value.setUrl(a);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(a) {\n return o.value.setBounds(a);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(a) {\n return o.value.setZIndex(a);\n }\n };\n return { options: s, methods: l };\n}, tt = {\n name: \"LImageOverlay\",\n props: ge,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = et(\n t,\n e,\n o\n );\n return b(async () => {\n const { imageOverlay: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(\n i(t.url, t.bounds, l)\n );\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, kt = tt, ot = {\n props: K,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l } = R(t, e, o);\n return b(async () => {\n const { layerGroup: a, DomEvent: i } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.options));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Dt = ot, re = {\n ...z,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object]\n },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, nt = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: re,\n setup(t, o) {\n const e = y(null), n = we({\n ready: !1,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: []\n }), { options: r } = F(t), s = L(t, re, r), l = q(\"addLayer\"), a = q(\"removeLayer\"), i = q(\"registerControl\"), u = q(\"registerLayerControl\");\n T(g, t.useGlobalLeaflet);\n const p = {\n moveEndHandler: le(() => {\n o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds());\n }),\n overlayAddHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!0);\n },\n overlayRemoveHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!1);\n }\n };\n b(async () => {\n t.useGlobalLeaflet && (v.L = v.L || await import(\"leaflet\"));\n const {\n map: O,\n CRS: P,\n Icon: B,\n latLngBounds: j,\n latLng: G,\n DomEvent: E\n } = t.useGlobalLeaflet ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n s.beforeMapMount && await s.beforeMapMount();\n } catch (d) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${d.message}`\n );\n }\n await Me(B);\n const N = typeof s.crs == \"string\" ? P[s.crs] : s.crs;\n s.crs = N || P.EPSG3857;\n const w = {\n addLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(d) : n.layersInControl.find(\n (H) => H.leafletObject._leaflet_id === d.leafletObject._leaflet_id\n ) || (n.layerControl.addLayer(d), n.layersInControl.push(d))), d.visible !== !1 && n.leafletRef.addLayer(d.leafletObject);\n },\n removeLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (C) => C.name !== d.name\n ) : (n.layerControl.removeLayer(d.leafletObject), n.layersInControl = n.layersInControl.filter(\n (C) => C.leafletObject._leaflet_id !== d.leafletObject._leaflet_id\n ))), n.leafletRef.removeLayer(d.leafletObject);\n },\n registerLayerControl(d) {\n n.layerControl = d, n.layersToAdd.forEach((C) => {\n n.layerControl.addLayer(C);\n }), n.layersToAdd = [], i(d);\n },\n registerControl(d) {\n n.leafletRef.addControl(d.leafletObject);\n },\n setZoom(d) {\n const C = n.leafletRef.getZoom();\n d !== C && n.leafletRef.setZoom(d, {\n animate: t.noBlockingAnimations ? !1 : null\n });\n },\n setPaddingBottomRight(d) {\n n.paddingBottomRight = d;\n },\n setPaddingTopLeft(d) {\n n.paddingTopLeft = d;\n },\n setPadding(d) {\n n.padding = d;\n },\n setCrs(d) {\n const C = n.leafletRef.getBounds();\n n.leafletRef.options.crs = d, n.leafletRef.fitBounds(C, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(d) {\n n.leafletRef.fitBounds(d, {\n animate: this.noBlockingAnimations ? !1 : null\n });\n },\n setBounds(d) {\n if (!d)\n return;\n const C = j(d);\n if (!C.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(C, 0) && (n.lastSetBounds = C, n.leafletRef.fitBounds(C, this.fitBoundsOptions));\n },\n setCenter(d) {\n if (d == null)\n return;\n const C = G(d), H = n.lastSetCenter || n.leafletRef.getCenter();\n (H.lat !== C.lat || H.lng !== C.lng) && (n.lastSetCenter = C, n.leafletRef.panTo(C, {\n animate: this.noBlockingAnimations ? !1 : null\n }));\n }\n };\n J(l, w.addLayer), J(a, w.removeLayer), J(i, w.registerControl), J(u, w.registerLayerControl), n.leafletRef = _(O(e.value, s)), h(w, n.leafletRef, t);\n const X = S(o.attrs);\n n.leafletRef.on(\"moveend\", p.moveEndHandler), n.leafletRef.on(\"overlayadd\", p.overlayAddHandler), n.leafletRef.on(\n \"overlayremove\",\n p.overlayRemoveHandler\n ), E.on(n.leafletRef, X), n.ready = !0, f(() => o.emit(\"ready\", n.leafletRef));\n }), U(() => {\n ie(p), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const m = se(() => n.leafletRef), $ = se(() => n.ready);\n return { root: e, ready: $, leafletObject: m };\n },\n render() {\n return I(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}, Et = nt, st = [\"Symbol(Comment)\", \"Symbol(Text)\"], at = [\"LTooltip\", \"LPopup\"], Oe = {\n ...k,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, rt = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, Oe, n), l = {\n ...r,\n setDraggable(a) {\n o.value.dragging && (a ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(a) {\n e.emit(\"update:latLng\", a.latlng), e.emit(\"update:lat-lng\", a.latlng);\n },\n setLatLng(a) {\n if (a != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(a)) && o.value.setLatLng(a);\n }\n }\n };\n return { options: s, methods: l };\n}, lt = (t, o) => {\n const e = o.slots.default && o.slots.default();\n return e && e.length && e.some(it);\n};\nfunction it(t) {\n return !(st.includes(t.type.toString()) || at.includes(t.type.name));\n}\nconst ut = {\n name: \"LMarker\",\n props: Oe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\");\n T(\"canSetParentHtml\", () => !!e.value.getElement()), T(\n \"setParentHtml\",\n (u) => e.value.getElement().innerHTML = u\n ), T(\n \"setIcon\",\n (u) => e.value.setIcon && e.value.setIcon(u)\n );\n const { options: l, methods: a } = rt(t, e, o), i = {\n moveHandler: le(a.latLngSync)\n };\n return b(async () => {\n const { marker: u, DomEvent: p, divIcon: m } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n lt(l, o) && (l.icon = m({ className: \"\" })), e.value = _(u(t.latLng, l));\n const $ = S(o.attrs);\n p.on(e.value, $), e.value.on(\"move\", i.moveHandler), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), U(() => ie(i)), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ht = ut, te = {\n ...V,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, _e = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, te, n), l = {\n ...r,\n setSmoothFactor(a) {\n o.value.setStyle({ smoothFactor: a });\n },\n setNoClip(a) {\n o.value.setStyle({ noClip: a });\n },\n addLatLng(a) {\n o.value.addLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, Q = {\n ...te\n}, Ce = (t, o, e) => {\n const { options: n, methods: r } = _e(\n t,\n o,\n e\n ), s = L(t, Q, n), l = {\n ...r,\n toGeoJSON(a) {\n return o.value.toGeoJSON(a);\n }\n };\n return { options: s, methods: l };\n}, ct = {\n name: \"LPolygon\",\n props: Q,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ce(t, e, o);\n return b(async () => {\n const { polygon: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ut = ct, dt = {\n name: \"LPolyline\",\n props: te,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = _e(t, e, o);\n return b(async () => {\n const { polyline: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, zt = dt, Se = {\n ...z,\n content: {\n type: String,\n default: null\n }\n}, je = (t, o) => {\n const { options: e, methods: n } = F(t), r = {\n ...n,\n setContent(s) {\n o.value && s !== null && s !== void 0 && o.value.setContent(s);\n }\n };\n return { options: e, methods: r };\n}, Pe = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, pt = {\n ...Se,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, yt = (t, o) => {\n const { options: e, methods: n } = je(t, o);\n return { options: e, methods: n };\n}, mt = {\n name: \"LPopup\",\n props: pt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindPopup\"), l = c(\"unbindPopup\"), { options: a, methods: i } = yt(t, e);\n return b(async () => {\n const { popup: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(u(a)), t.latLng !== void 0 && e.value.setLatLng(t.latLng), h(i, e.value, t);\n const m = S(o.attrs);\n p.on(e.value, m), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), U(() => {\n l({ leafletObject: e.value });\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, Ft = mt;\nQ.latLngs.required = !1;\nconst Be = {\n ...Q,\n bounds: {\n type: Array,\n custom: !0\n }\n}, vt = (t, o, e) => {\n const { options: n, methods: r } = Ce(\n t,\n o,\n e\n ), s = L(t, Be, n), l = {\n ...r,\n setBounds(a) {\n o.value.setBounds(a);\n },\n setLatLngs(a) {\n o.value.setBounds(a);\n }\n };\n return { options: s, methods: l };\n}, ft = {\n name: \"LRectangle\",\n props: Be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = vt(t, e, o);\n return b(async () => {\n const { rectangle: i, latLngBounds: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), m = t.bounds && t.bounds.length ? u(t.bounds) : u(t.latLngs);\n e.value = _(i(m, l));\n const $ = S(o.attrs);\n p.on(e.value, $), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Zt = ft, oe = {\n ...ee,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (t) => typeof t == \"string\" ? !0 : Array.isArray(t) ? t.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, Te = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = he(t, o, e), s = L(\n t,\n oe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, Lt = {\n props: oe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Te(t, e, o);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Wt = Lt, bt = {\n ...Se\n}, ht = (t, o) => {\n const { options: e, methods: n } = je(t, o), r = c(\"unbindTooltip\");\n return U(() => {\n r();\n }), { options: e, methods: n };\n}, gt = {\n name: \"LTooltip\",\n props: bt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindTooltip\"), { options: l, methods: a } = ht(t, e);\n return b(async () => {\n const { tooltip: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(l)), h(a, e.value, t);\n const p = S(o.attrs);\n u.on(e.value, p), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, qt = gt, $e = {\n ...oe,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, Ot = (t, o) => {\n const {\n options: e,\n methods: n\n } = Te(t, o);\n return {\n options: L(\n t,\n $e,\n e\n ),\n methods: {\n ...n\n }\n };\n}, _t = {\n props: $e,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Ot(t, e);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.wms(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Jt = _t;\nexport {\n jt as LCircle,\n Pt as LCircleMarker,\n Bt as LControl,\n Tt as LControlAttribution,\n $t as LControlLayers,\n At as LControlScale,\n wt as LControlZoom,\n Gt as LFeatureGroup,\n Mt as LGeoJson,\n It as LGridLayer,\n Nt as LIcon,\n kt as LImageOverlay,\n Dt as LLayerGroup,\n Et as LMap,\n Ht as LMarker,\n Ut as LPolygon,\n zt as LPolyline,\n Ft as LPopup,\n Zt as LRectangle,\n Wt as LTileLayer,\n qt as LTooltip,\n Jt as LWmsTileLayer\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n };\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2aec89b0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n zoomAnimation: false,\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2aec89b0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2aec89b0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9fc0bab8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n ),\n props.authUser.date_format\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9fc0bab8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9fc0bab8\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b68c436\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n };\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n x: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0b68c436&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0b68c436\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f6b59442\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null };\n\n \n\n const { notes } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"span\", {\n innerHTML: \n _unref(notes) && _unref(notes) !== ''\n ? _unref(linkifyAndClean)(_unref(notes))\n : _ctx.$t('workouts.NO_NOTES')\n \n }, null, 8, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=f6b59442&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f6b59442\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n };\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b8a27cd\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53c4e53a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n };\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c38593a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-19504874\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n workout.workout_date,\n _unref(user).timezone,\n _unref(user).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.ascent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.descent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=19504874&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-19504874\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-57ec0168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=57ec0168&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-57ec0168\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","workoutAscent","workoutDescent","withGpx","ref","with_gpx","gpxFile","formErrors","payloadErrorMessages","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","ascent","descent","isDistanceInvalid","includes","isDurationInvalid","isElevationInvalid","formatPayload","payload","push","updateWorkout","length","commit","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","file","onCancel","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","errored","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","getWindSpeed","wind","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","getTemperature","temperature","Number","humidity","WeatherWind","displayHARecord","withPause","pauses","_component_Distance","moving","WorkoutRecord","digits","unitFrom","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","PI","le","o","e","r","s","this","clearTimeout","setTimeout","apply","cancel","ie","M","Ge","charAt","toUpperCase","slice","h","l","L","custom","S","startsWith","toLocaleLowerCase","Me","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","q","console","warn","wrapped","J","v","self","g","global","z","options","F","methods","k","pane","String","attribution","layerType","visible","Z","a","leafletObject","u","p","setAttribution","m","setName","setLayerType","setVisible","bindPopup","bindTooltip","unbindTooltip","closeTooltip","unbindPopup","closePopup","updateVisibleProp","A","display","ue","interactive","bubblingMouseEvents","V","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","x","radius","latLng","position","W","D","setPosition","remove","Ee","He","disableClickPropagation","disableScrollPropagation","Control","DomEvent","extend","onAdd","root","render","$slots","Bt","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","Fe","me","addLayer","addBaseLayer","addOverlay","removeLayer","Ze","control","layers","R","K","geojson","optionsStyle","Ye","be","hasOwnProperty","call","setGeojson","clearLayers","addData","setOptionsStyle","setStyle","getGeoJSONData","toGeoJSON","getBounds","Ve","geoJSON","attrs","on","ready","Mt","ee","zIndex","tileSize","noWrap","minZoom","maxZoom","he","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","Re","ae","j","G","E","N","innerHTML","w","X","d","html","O","P","B","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","divIcon","off","MutationObserver","observe","attributes","childList","characterData","subtree","Nt","layerGroup","Dt","ot","re","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","useGlobalLeaflet","nt","leafletRef","layersToAdd","layersInControl","moveEndHandler","getZoom","getCenter","overlayAddHandler","overlayRemoveHandler","CRS","Icon","latLngBounds","beforeMapMount","error","EPSG3857","layerControl","H","_leaflet_id","filter","C","registerLayerControl","forEach","registerControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","fitBounds","setBounds","isValid","lastSetBounds","equals","fitBoundsOptions","setCenter","lastSetCenter","lat","lng","panTo","height","Et","st","at","Oe","draggable","zIndexOffset","rt","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","getLatLng","lt","slots","some","it","toString","ut","getElement","setIcon","moveHandler","marker","Ht","te","smoothFactor","noClip","latLngs","Q","tms","subdomains","validator","isArray","every","detectRetina","url","Te","oe","Lt","tileLayer","Wt","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LControl","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","date_format","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","args","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","undefined","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","tooltip","interaction","intersect","mode","callbacks","context","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","linkifyAndClean","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","formatDate","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/workouts.a06ab85f.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-45d3bf87\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = { class: \"workout-data\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = [\"disabled\"]\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = [\"disabled\"]\nconst _hoisted_36 = { class: \"form-item\" }\nconst _hoisted_37 = { key: 1 }\nconst _hoisted_38 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_39 = [\"disabled\"]\nconst _hoisted_40 = [\"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout };\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n workoutAscent: '',\n workoutDescent: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n const payloadErrorMessages: Ref = ref([])\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 3)\n : parseFloat(workout.distance.toFixed(3))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n workoutForm.workoutAscent =\n workout.ascent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.ascent, 'm', 'ft', 2)\n : parseFloat(workout.ascent.toFixed(2))\n }`\n workoutForm.workoutDescent =\n workout.descent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.descent, 'm', 'ft', 2)\n : parseFloat(workout.descent.toFixed(2))\n }`\n }\n }\n function isDistanceInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')\n }\n function isDurationInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')\n }\n function isElevationInvalid() {\n return payloadErrorMessages.value.includes(\n 'workouts.INVALID_ASCENT_OR_DESCENT'\n )\n }\n function formatPayload(payload: IWorkoutForm) {\n payloadErrorMessages.value = []\n payload.title = workoutForm.title\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n if (payload.duration <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DURATION')\n }\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n if (payload.distance <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')\n }\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n payload.ascent =\n workoutForm.workoutAscent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)\n : +workoutForm.workoutAscent\n payload.descent =\n workoutForm.workoutDescent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)\n : +workoutForm.workoutDescent\n if (\n (payload.ascent !== null && payload.descent === null) ||\n (payload.ascent === null && payload.descent !== null)\n ) {\n payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')\n }\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n }\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \"*: \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \"*: \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \"*:\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 42, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 42, _hoisted_27), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 42, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \")*: \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isDistanceInvalid() }),\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 42, _hoisted_31), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.ASCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-ascent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((workoutForm.workoutAscent) = $event))\n }, null, 42, _hoisted_33), [\n [_vModelText, workoutForm.workoutAscent]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DESCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-descent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((workoutForm.workoutDescent) = $event))\n }, null, 42, _hoisted_35), [\n [_vModelText, workoutForm.workoutDescent]\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_39),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_40)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=45d3bf87&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-45d3bf87\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"workout-date\" }\nconst _hoisted_12 = { class: \"workout-link\" }\nconst _hoisted_13 = [\"title\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n };\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _createTextVNode(\" — \"),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_12, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_15, 10, _hoisted_13)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n };\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40697ed1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { getWindSpeed } from '@/utils/units'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createTextVNode(_toDisplayString(_unref(getWindSpeed)(_unref(weather).wind, _unref(useImperialUnits))) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=40697ed1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-40697ed1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-807b431a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n import { getTemperature } from '@/utils/units'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherStart.temperature,\n _unref(useImperialUnits)\n )), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherEnd.temperature,\n _unref(useImperialUnits)\n )), 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=807b431a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-807b431a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = { class: \"value\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"value\" }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"workout-data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"label\" }\nconst _hoisted_12 = { class: \"workout-data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = { class: \"label\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_18 = [\"alt\"]\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_21 = { class: \"label\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = { class: \"label\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n };\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\": \"),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_18),\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_20,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIconHref(node) {\n return get(node, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n });\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), extractIconHref(iconStyle));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst toNumber = (x) => Number(x);\nconst typeConverters = {\n string: (x) => x,\n int: toNumber,\n uint: toNumber,\n short: toNumber,\n ushort: toNumber,\n float: toNumber,\n double: toNumber,\n bool: (x) => Boolean(x),\n};\nfunction extractExtendedData(node, schema) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n const name = simpleData.getAttribute(\"name\") || \"\";\n const typeConverter = schema[name] || typeConverters.string;\n properties[name] = typeConverter(nodeVal(simpleData));\n }\n return properties;\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n let geometries = [];\n let coordTimes = [];\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes.item(i);\n if (isElement(child)) {\n switch (child.tagName) {\n case \"MultiGeometry\":\n case \"MultiTrack\":\n case \"gx:MultiTrack\": {\n const childGeometries = getGeometry(child);\n geometries = geometries.concat(childGeometries.geometries);\n coordTimes = coordTimes.concat(childGeometries.coordTimes);\n break;\n }\n case \"Point\": {\n const coordinates = coord1(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LinearRing\":\n case \"LineString\": {\n const coordinates = coord(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(child, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(child);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction getPlacemark(node, styleMap, schema) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getGroundOverlayBox(node) {\n const latLonQuad = get1(node, \"gx:LatLonQuad\");\n if (latLonQuad) {\n const ring = fixRing(coord(getCoordinates(node)));\n return {\n type: \"Polygon\",\n coordinates: [ring],\n };\n }\n return getLatLonBox(node);\n}\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction rotateBox(bbox, coordinates, rotation) {\n const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];\n return [\n coordinates[0].map((coordinate) => {\n const dy = coordinate[1] - center[1];\n const dx = coordinate[0] - center[0];\n const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));\n const angle = Math.atan2(dy, dx) - rotation * DEGREES_TO_RADIANS;\n return [\n center[0] + Math.cos(angle) * distance,\n center[1] + Math.sin(angle) * distance,\n ];\n }),\n ];\n}\nfunction getLatLonBox(node) {\n const latLonBox = get1(node, \"LatLonBox\");\n if (latLonBox) {\n const north = num1(latLonBox, \"north\");\n const west = num1(latLonBox, \"west\");\n const east = num1(latLonBox, \"east\");\n const south = num1(latLonBox, \"south\");\n const rotation = num1(latLonBox, \"rotation\");\n if (typeof north === \"number\" &&\n typeof south === \"number\" &&\n typeof west === \"number\" &&\n typeof east === \"number\") {\n const bbox = [west, south, east, north];\n let coordinates = [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north], // top left (again)\n ],\n ];\n if (typeof rotation === \"number\") {\n coordinates = rotateBox(bbox, coordinates, rotation);\n }\n return {\n type: \"Polygon\",\n coordinates,\n };\n }\n }\n return null;\n}\nfunction getGroundOverlay(node, styleMap, schema) {\n const geometry = getGroundOverlayBox(node);\n const feature = {\n type: \"Feature\",\n geometry,\n properties: Object.assign(\n /**\n * Related to\n * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46\n */\n { \"@geometry-type\": \"groundoverlay\" }, getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractIconHref(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node)),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nfunction buildSchema(node) {\n const schema = {};\n for (const field of $(node, \"SimpleField\")) {\n schema[field.getAttribute(\"name\") || \"\"] =\n typeConverters[field.getAttribute(\"type\") || \"\"] ||\n typeConverters[\"string\"];\n }\n return schema;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n *\n * ### GroundOverlay\n *\n * GroundOverlay elements are converted into\n * `Feature` objects with `Polygon` geometries,\n * a property like:\n *\n * ```json\n * {\n * \"@geometry-type\": \"groundoverlay\"\n * }\n * ```\n *\n * And the ground overlay's image URL in the `href`\n * property. Ground overlays will need to be displayed\n * with a separate method to other features, depending\n * on which map framework you're using.\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"GroundOverlay\": {\n const placemark = getGroundOverlay(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap, schema);\n if (feature)\n yield feature;\n }\n for (const groundOverlay of $(node, \"GroundOverlay\")) {\n const feature = getGroundOverlay(groundOverlay, styleMap, schema);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch as ne, ref as y, provide as T, h as I, inject as c, onUnmounted as Y, onBeforeUnmount as U, onMounted as b, markRaw as _, nextTick as f, render as Ae, reactive as we, computed as se } from \"vue\";\nconst le = (t, o = 100) => {\n let e;\n const n = function(...r) {\n const s = this;\n e && clearTimeout(e), e = setTimeout(() => {\n t.apply(s, r), e = null;\n }, o);\n };\n return n.cancel = function() {\n e && clearTimeout(e);\n }, n;\n}, ie = function(t) {\n for (const o of Object.values(t))\n o && M(o.cancel) && o.cancel();\n}, Ge = (t) => !t || typeof t.charAt != \"function\" ? t : t.charAt(0).toUpperCase() + t.slice(1), M = (t) => typeof t == \"function\", h = (t, o, e) => {\n for (const n in e) {\n const r = \"set\" + Ge(n);\n t[r] ? ne(\n () => e[n],\n (s, l) => {\n t[r](s, l);\n }\n ) : o[r] && ne(\n () => e[n],\n (s) => {\n o[r](s);\n }\n );\n }\n}, L = (t, o, e = {}) => {\n const n = { ...e };\n for (const r in t) {\n const s = o[r], l = t[r];\n s && (s && s.custom === !0 || l !== void 0 && (n[r] = l));\n }\n return n;\n}, S = (t) => {\n const o = {};\n for (const e in t)\n if (e.startsWith(\"on\") && !e.startsWith(\"onUpdate\") && e !== \"onReady\") {\n const n = e.slice(2).toLocaleLowerCase();\n o[n] = t[e];\n }\n return o;\n}, Me = async (t) => {\n const o = await Promise.all([\n import(\"leaflet/dist/images/marker-icon-2x.png\"),\n import(\"leaflet/dist/images/marker-icon.png\"),\n import(\"leaflet/dist/images/marker-shadow.png\")\n ]);\n delete t.Default.prototype._getIconUrl, t.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, q = (t) => {\n const o = y(\n () => console.warn(`Method ${t} has been invoked without being replaced`)\n ), e = (...n) => o.value(...n);\n return e.wrapped = o, T(t, e), e;\n}, J = (t, o) => t.wrapped.value = o, v = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || void 0, g = \"useGlobalLeaflet\", z = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, F = (t) => ({ options: t.options, methods: {} }), k = {\n ...z,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, Z = (t, o, e) => {\n const n = c(\"addLayer\"), r = c(\"removeLayer\"), {\n options: s,\n methods: l\n } = F(t), a = L(t, k, s), i = () => n({ leafletObject: o.value }), u = () => r({ leafletObject: o.value }), p = {\n ...l,\n setAttribution(m) {\n u(), o.value.options.attribution = m, t.visible && i();\n },\n setName() {\n u(), t.visible && i();\n },\n setLayerType() {\n u(), t.visible && i();\n },\n setVisible(m) {\n o.value && (m ? i() : u());\n },\n bindPopup({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(m);\n },\n bindTooltip({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(m);\n },\n unbindTooltip() {\n o.value && (M(o.value.closeTooltip) && o.value.closeTooltip(), M(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (M(o.value.closePopup) && o.value.closePopup(), M(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(m) {\n e.emit(\"update:visible\", m);\n }\n };\n return T(\"bindPopup\", p.bindPopup), T(\"bindTooltip\", p.bindTooltip), T(\"unbindTooltip\", p.unbindTooltip), T(\"unbindPopup\", p.unbindPopup), Y(() => {\n p.unbindPopup(), p.unbindTooltip(), u();\n }), { options: a, methods: p };\n}, A = (t, o) => {\n if (t && o.default)\n return I(\"div\", { style: { display: \"none\" } }, o.default());\n}, ue = {\n ...k,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ie = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(\n t,\n ue,\n n\n ), methods: r };\n}, V = {\n ...ue,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, ce = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = Ie(t, o, e), s = L(\n t,\n V,\n n\n ), l = c(\"removeLayer\"), a = {\n ...r,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return U(() => {\n l({ leafletObject: o.value });\n }), { options: s, methods: a };\n}, x = {\n ...V,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, de = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, x, n), l = {\n ...r,\n setRadius(a) {\n o.value.setRadius(a);\n },\n setLatLng(a) {\n o.value.setLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, pe = {\n ...x,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, Ne = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = de(t, o, e), s = L(\n t,\n pe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, ke = {\n name: \"LCircle\",\n props: pe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ne(t, e, o);\n return b(async () => {\n const { circle: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, jt = ke, De = {\n name: \"LCircleMarker\",\n props: x,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = de(\n t,\n e,\n o\n );\n return b(async () => {\n const { circleMarker: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Pt = De, D = {\n ...z,\n position: {\n type: String\n }\n}, W = (t, o) => {\n const {\n options: e,\n methods: n\n } = F(t), r = L(t, D, e), s = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return Y(() => {\n o.value && o.value.remove();\n }), { options: r, methods: s };\n}, Ee = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, He = {\n name: \"LControl\",\n props: {\n ...D,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"registerControl\"), { options: l, methods: a } = W(t, e);\n return b(async () => {\n const { Control: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), p = i.extend({\n onAdd() {\n return n.value;\n }\n });\n e.value = _(new p(l)), h(a, e.value, t), s({ leafletObject: e.value }), t.disableClickPropagation && u.disableClickPropagation(n.value), t.disableScrollPropagation && u.disableScrollPropagation(n.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Ee(this.$slots);\n }\n}, Bt = He, ye = {\n ...D,\n prefix: {\n type: String\n }\n}, Ue = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n ), r = L(\n t,\n ye,\n e\n ), s = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: r, methods: s };\n}, ze = {\n name: \"LControlAttribution\",\n props: ye,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Ue(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.attribution(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Tt = ze, me = {\n ...D,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, Fe = (t, o) => {\n const { options: e } = W(t, o);\n return { options: L(\n t,\n me,\n e\n ), methods: {\n addLayer(s) {\n s.layerType === \"base\" ? o.value.addBaseLayer(s.leafletObject, s.name) : s.layerType === \"overlay\" && o.value.addOverlay(s.leafletObject, s.name);\n },\n removeLayer(s) {\n o.value.removeLayer(s.leafletObject);\n }\n } };\n}, Ze = {\n name: \"LControlLayers\",\n props: me,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerLayerControl\"), { options: s, methods: l } = Fe(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.layers(null, null, s)), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, $t = Ze, ve = {\n ...D,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, We = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n ve,\n e\n ), methods: n };\n}, qe = {\n name: \"LControlScale\",\n props: ve,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = We(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.scale(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, At = qe, fe = {\n ...D,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, Je = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n fe,\n e\n ), methods: n };\n}, Ke = {\n name: \"LControlZoom\",\n props: fe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Je(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.zoom(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, wt = Ke, K = {\n ...k\n}, R = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, K, n), l = {\n ...r,\n addLayer(a) {\n o.value.addLayer(a.leafletObject);\n },\n removeLayer(a) {\n o.value.removeLayer(a.leafletObject);\n }\n };\n return T(\"addLayer\", l.addLayer), T(\"removeLayer\", l.removeLayer), { options: s, methods: l };\n}, Le = {\n ...K\n}, Qe = (t, o) => {\n const { options: e, methods: n } = R(\n t,\n o\n ), r = L(t, Le, e), s = {\n ...n\n };\n return { options: r, methods: s };\n}, Xe = {\n props: Le,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Qe(t, e);\n return b(async () => {\n const { featureGroup: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Gt = Xe, be = {\n ...K,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: [Object, Function],\n custom: !0\n }\n}, Ye = (t, o, e) => {\n const { options: n, methods: r } = R(\n t,\n o,\n e\n ), s = L(t, be, n);\n Object.prototype.hasOwnProperty.call(t, \"optionsStyle\") && (s.style = t.optionsStyle);\n const l = {\n ...r,\n setGeojson(a) {\n o.value.clearLayers(), o.value.addData(a);\n },\n setOptionsStyle(a) {\n o.value.setStyle(a);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: s, methods: l };\n}, Ve = {\n props: be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Ye(t, e, o);\n return b(async () => {\n const { geoJSON: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.geojson, a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Mt = Ve, ee = {\n ...k,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: Number\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n }\n}, he = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(t, ee, n), methods: { ...r } };\n}, xe = {\n props: {\n ...ee,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(t, o) {\n const e = y({}), n = y({}), r = y(null), s = y(!1), l = c(g), a = c(\"addLayer\"), { options: i, methods: u } = he(t, e, o);\n return b(async () => {\n const { GridLayer: p, DomEvent: m, DomUtil: $ } = l ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n u.onUnload = (B) => {\n const j = e.value._tileCoordsToKey(B.coords);\n n[j] && (n[j].innerHTML = \"\", n[j] = void 0);\n }, u.setTileComponent = () => {\n e.value.redraw();\n };\n const O = p.extend({\n createTile(B) {\n const j = e.value._tileCoordsToKey(B);\n n[j] = $.create(\"div\");\n let G = I(\n { setup: t.childRender, props: [\"coords\"] },\n { coords: B }\n );\n return Ae(G, n[j]), n[j];\n }\n });\n e.value = _(new O(i));\n const P = S(o.attrs);\n m.on(e.value, P), e.value.on(\"tileunload\", u.onUnload), h(u, e.value, t), a({\n ...t,\n ...u,\n leafletObject: e.value\n }), s.value = !0, f(() => o.emit(\"ready\", e.value));\n }), Y(() => {\n e.value.off(\"tileunload\", u.onUnload);\n }), { root: r, ready: s, leafletObject: e };\n },\n render() {\n return this.ready ? I(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}, It = xe, ae = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, Re = {\n name: \"LIcon\",\n props: {\n ...ae,\n ...z\n },\n setup(t, o) {\n const e = y(null), n = c(g), r = c(\"canSetParentHtml\"), s = c(\"setParentHtml\"), l = c(\"setIcon\");\n let a, i, u, p, m;\n const $ = (j, G, E) => {\n const N = j && j.innerHTML;\n if (!G) {\n E && m && r() && s(N);\n return;\n }\n const w = S(o.attrs);\n m && i(m, w);\n const { options: X } = F(t), d = L(t, ae, X);\n N && (d.html = N), m = d.html ? u(d) : p(d), a(m, w), l(m);\n }, O = () => {\n f(() => $(e.value, !0, !1));\n }, P = () => {\n f(() => $(e.value, !1, !0));\n }, B = {\n setIconUrl: O,\n setIconRetinaUrl: O,\n setIconSize: O,\n setIconAnchor: O,\n setPopupAnchor: O,\n setTooltipAnchor: O,\n setShadowUrl: O,\n setShadowRetinaUrl: O,\n setShadowAnchor: O,\n setBgPos: O,\n setClassName: O,\n setHtml: O\n };\n return b(async () => {\n const { DomEvent: j, divIcon: G, icon: E } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n a = j.on, i = j.off, u = G, p = E, h(B, {}, t), new MutationObserver(P).observe(e.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), O();\n }), { root: e };\n },\n render() {\n const t = this.$slots.default ? this.$slots.default() : void 0;\n return I(\"div\", { ref: \"root\" }, t);\n }\n}, Nt = Re, ge = {\n ...k,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, et = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, ge, n), l = {\n ...r,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(a) {\n return o.value.setOpacity(a);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(a) {\n return o.value.setUrl(a);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(a) {\n return o.value.setBounds(a);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(a) {\n return o.value.setZIndex(a);\n }\n };\n return { options: s, methods: l };\n}, tt = {\n name: \"LImageOverlay\",\n props: ge,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = et(\n t,\n e,\n o\n );\n return b(async () => {\n const { imageOverlay: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(\n i(t.url, t.bounds, l)\n );\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, kt = tt, ot = {\n props: K,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l } = R(t, e, o);\n return b(async () => {\n const { layerGroup: a, DomEvent: i } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.options));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Dt = ot, re = {\n ...z,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object]\n },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, nt = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: re,\n setup(t, o) {\n const e = y(null), n = we({\n ready: !1,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: []\n }), { options: r } = F(t), s = L(t, re, r), l = q(\"addLayer\"), a = q(\"removeLayer\"), i = q(\"registerControl\"), u = q(\"registerLayerControl\");\n T(g, t.useGlobalLeaflet);\n const p = {\n moveEndHandler: le(() => {\n o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds());\n }),\n overlayAddHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!0);\n },\n overlayRemoveHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!1);\n }\n };\n b(async () => {\n t.useGlobalLeaflet && (v.L = v.L || await import(\"leaflet\"));\n const {\n map: O,\n CRS: P,\n Icon: B,\n latLngBounds: j,\n latLng: G,\n DomEvent: E\n } = t.useGlobalLeaflet ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n s.beforeMapMount && await s.beforeMapMount();\n } catch (d) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${d.message}`\n );\n }\n await Me(B);\n const N = typeof s.crs == \"string\" ? P[s.crs] : s.crs;\n s.crs = N || P.EPSG3857;\n const w = {\n addLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(d) : n.layersInControl.find(\n (H) => H.leafletObject._leaflet_id === d.leafletObject._leaflet_id\n ) || (n.layerControl.addLayer(d), n.layersInControl.push(d))), d.visible !== !1 && n.leafletRef.addLayer(d.leafletObject);\n },\n removeLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (C) => C.name !== d.name\n ) : (n.layerControl.removeLayer(d.leafletObject), n.layersInControl = n.layersInControl.filter(\n (C) => C.leafletObject._leaflet_id !== d.leafletObject._leaflet_id\n ))), n.leafletRef.removeLayer(d.leafletObject);\n },\n registerLayerControl(d) {\n n.layerControl = d, n.layersToAdd.forEach((C) => {\n n.layerControl.addLayer(C);\n }), n.layersToAdd = [], i(d);\n },\n registerControl(d) {\n n.leafletRef.addControl(d.leafletObject);\n },\n setZoom(d) {\n const C = n.leafletRef.getZoom();\n d !== C && n.leafletRef.setZoom(d, {\n animate: t.noBlockingAnimations ? !1 : null\n });\n },\n setPaddingBottomRight(d) {\n n.paddingBottomRight = d;\n },\n setPaddingTopLeft(d) {\n n.paddingTopLeft = d;\n },\n setPadding(d) {\n n.padding = d;\n },\n setCrs(d) {\n const C = n.leafletRef.getBounds();\n n.leafletRef.options.crs = d, n.leafletRef.fitBounds(C, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(d) {\n n.leafletRef.fitBounds(d, {\n animate: this.noBlockingAnimations ? !1 : null\n });\n },\n setBounds(d) {\n if (!d)\n return;\n const C = j(d);\n if (!C.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(C, 0) && (n.lastSetBounds = C, n.leafletRef.fitBounds(C, this.fitBoundsOptions));\n },\n setCenter(d) {\n if (d == null)\n return;\n const C = G(d), H = n.lastSetCenter || n.leafletRef.getCenter();\n (H.lat !== C.lat || H.lng !== C.lng) && (n.lastSetCenter = C, n.leafletRef.panTo(C, {\n animate: this.noBlockingAnimations ? !1 : null\n }));\n }\n };\n J(l, w.addLayer), J(a, w.removeLayer), J(i, w.registerControl), J(u, w.registerLayerControl), n.leafletRef = _(O(e.value, s)), h(w, n.leafletRef, t);\n const X = S(o.attrs);\n n.leafletRef.on(\"moveend\", p.moveEndHandler), n.leafletRef.on(\"overlayadd\", p.overlayAddHandler), n.leafletRef.on(\n \"overlayremove\",\n p.overlayRemoveHandler\n ), E.on(n.leafletRef, X), n.ready = !0, f(() => o.emit(\"ready\", n.leafletRef));\n }), U(() => {\n ie(p), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const m = se(() => n.leafletRef), $ = se(() => n.ready);\n return { root: e, ready: $, leafletObject: m };\n },\n render() {\n return I(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}, Et = nt, st = [\"Symbol(Comment)\", \"Symbol(Text)\"], at = [\"LTooltip\", \"LPopup\"], Oe = {\n ...k,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, rt = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, Oe, n), l = {\n ...r,\n setDraggable(a) {\n o.value.dragging && (a ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(a) {\n e.emit(\"update:latLng\", a.latlng), e.emit(\"update:lat-lng\", a.latlng);\n },\n setLatLng(a) {\n if (a != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(a)) && o.value.setLatLng(a);\n }\n }\n };\n return { options: s, methods: l };\n}, lt = (t, o) => {\n const e = o.slots.default && o.slots.default();\n return e && e.length && e.some(it);\n};\nfunction it(t) {\n return !(st.includes(t.type.toString()) || at.includes(t.type.name));\n}\nconst ut = {\n name: \"LMarker\",\n props: Oe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\");\n T(\"canSetParentHtml\", () => !!e.value.getElement()), T(\n \"setParentHtml\",\n (u) => e.value.getElement().innerHTML = u\n ), T(\n \"setIcon\",\n (u) => e.value.setIcon && e.value.setIcon(u)\n );\n const { options: l, methods: a } = rt(t, e, o), i = {\n moveHandler: le(a.latLngSync)\n };\n return b(async () => {\n const { marker: u, DomEvent: p, divIcon: m } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n lt(l, o) && (l.icon = m({ className: \"\" })), e.value = _(u(t.latLng, l));\n const $ = S(o.attrs);\n p.on(e.value, $), e.value.on(\"move\", i.moveHandler), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), U(() => ie(i)), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ht = ut, te = {\n ...V,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, _e = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, te, n), l = {\n ...r,\n setSmoothFactor(a) {\n o.value.setStyle({ smoothFactor: a });\n },\n setNoClip(a) {\n o.value.setStyle({ noClip: a });\n },\n addLatLng(a) {\n o.value.addLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, Q = {\n ...te\n}, Ce = (t, o, e) => {\n const { options: n, methods: r } = _e(\n t,\n o,\n e\n ), s = L(t, Q, n), l = {\n ...r,\n toGeoJSON(a) {\n return o.value.toGeoJSON(a);\n }\n };\n return { options: s, methods: l };\n}, ct = {\n name: \"LPolygon\",\n props: Q,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ce(t, e, o);\n return b(async () => {\n const { polygon: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ut = ct, dt = {\n name: \"LPolyline\",\n props: te,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = _e(t, e, o);\n return b(async () => {\n const { polyline: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, zt = dt, Se = {\n ...z,\n content: {\n type: String,\n default: null\n }\n}, je = (t, o) => {\n const { options: e, methods: n } = F(t), r = {\n ...n,\n setContent(s) {\n o.value && s !== null && s !== void 0 && o.value.setContent(s);\n }\n };\n return { options: e, methods: r };\n}, Pe = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, pt = {\n ...Se,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, yt = (t, o) => {\n const { options: e, methods: n } = je(t, o);\n return { options: e, methods: n };\n}, mt = {\n name: \"LPopup\",\n props: pt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindPopup\"), l = c(\"unbindPopup\"), { options: a, methods: i } = yt(t, e);\n return b(async () => {\n const { popup: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(u(a)), t.latLng !== void 0 && e.value.setLatLng(t.latLng), h(i, e.value, t);\n const m = S(o.attrs);\n p.on(e.value, m), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), U(() => {\n l({ leafletObject: e.value });\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, Ft = mt;\nQ.latLngs.required = !1;\nconst Be = {\n ...Q,\n bounds: {\n type: Array,\n custom: !0\n }\n}, vt = (t, o, e) => {\n const { options: n, methods: r } = Ce(\n t,\n o,\n e\n ), s = L(t, Be, n), l = {\n ...r,\n setBounds(a) {\n o.value.setBounds(a);\n },\n setLatLngs(a) {\n o.value.setBounds(a);\n }\n };\n return { options: s, methods: l };\n}, ft = {\n name: \"LRectangle\",\n props: Be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = vt(t, e, o);\n return b(async () => {\n const { rectangle: i, latLngBounds: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), m = t.bounds && t.bounds.length ? u(t.bounds) : u(t.latLngs);\n e.value = _(i(m, l));\n const $ = S(o.attrs);\n p.on(e.value, $), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Zt = ft, oe = {\n ...ee,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (t) => typeof t == \"string\" ? !0 : Array.isArray(t) ? t.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, Te = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = he(t, o, e), s = L(\n t,\n oe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, Lt = {\n props: oe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Te(t, e, o);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Wt = Lt, bt = {\n ...Se\n}, ht = (t, o) => {\n const { options: e, methods: n } = je(t, o), r = c(\"unbindTooltip\");\n return U(() => {\n r();\n }), { options: e, methods: n };\n}, gt = {\n name: \"LTooltip\",\n props: bt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindTooltip\"), { options: l, methods: a } = ht(t, e);\n return b(async () => {\n const { tooltip: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(l)), h(a, e.value, t);\n const p = S(o.attrs);\n u.on(e.value, p), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, qt = gt, $e = {\n ...oe,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, Ot = (t, o) => {\n const {\n options: e,\n methods: n\n } = Te(t, o);\n return {\n options: L(\n t,\n $e,\n e\n ),\n methods: {\n ...n\n }\n };\n}, _t = {\n props: $e,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Ot(t, e);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.wms(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Jt = _t;\nexport {\n jt as LCircle,\n Pt as LCircleMarker,\n Bt as LControl,\n Tt as LControlAttribution,\n $t as LControlLayers,\n At as LControlScale,\n wt as LControlZoom,\n Gt as LFeatureGroup,\n Mt as LGeoJson,\n It as LGridLayer,\n Nt as LIcon,\n kt as LImageOverlay,\n Dt as LLayerGroup,\n Et as LMap,\n Ht as LMarker,\n Ut as LPolygon,\n zt as LPolyline,\n Ft as LPopup,\n Zt as LRectangle,\n Wt as LTileLayer,\n qt as LTooltip,\n Jt as LWmsTileLayer\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n };\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2aec89b0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n zoomAnimation: false,\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2aec89b0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2aec89b0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9fc0bab8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n ),\n props.authUser.date_format\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9fc0bab8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9fc0bab8\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b68c436\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n };\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n x: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0b68c436&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0b68c436\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f6b59442\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null };\n\n \n\n const { notes } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"span\", {\n innerHTML: \n _unref(notes) && _unref(notes) !== ''\n ? _unref(linkifyAndClean)(_unref(notes))\n : _ctx.$t('workouts.NO_NOTES')\n \n }, null, 8, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=f6b59442&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f6b59442\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n };\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b8a27cd\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53c4e53a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n };\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c38593a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-19504874\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n workout.workout_date,\n _unref(user).timezone,\n _unref(user).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.ascent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.descent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=19504874&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-19504874\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-57ec0168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=57ec0168&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-57ec0168\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","workoutAscent","workoutDescent","withGpx","ref","with_gpx","gpxFile","formErrors","payloadErrorMessages","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","ascent","descent","isDistanceInvalid","includes","isDurationInvalid","isElevationInvalid","formatPayload","payload","push","updateWorkout","length","commit","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","file","onCancel","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","errored","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","getWindSpeed","wind","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","getTemperature","temperature","Number","humidity","WeatherWind","displayHARecord","withPause","pauses","_component_Distance","moving","WorkoutRecord","digits","unitFrom","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","PI","le","o","e","r","s","this","clearTimeout","setTimeout","apply","cancel","ie","M","Ge","charAt","toUpperCase","slice","h","l","L","custom","S","startsWith","toLocaleLowerCase","Me","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","q","console","warn","wrapped","J","v","self","g","global","z","options","F","methods","k","pane","String","attribution","layerType","visible","Z","a","leafletObject","u","p","setAttribution","m","setName","setLayerType","setVisible","bindPopup","bindTooltip","unbindTooltip","closeTooltip","unbindPopup","closePopup","updateVisibleProp","A","display","ue","interactive","bubblingMouseEvents","V","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","x","radius","latLng","position","W","D","setPosition","remove","Ee","He","disableClickPropagation","disableScrollPropagation","Control","DomEvent","extend","onAdd","root","render","$slots","Bt","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","Fe","me","addLayer","addBaseLayer","addOverlay","removeLayer","Ze","control","layers","R","K","geojson","optionsStyle","Ye","be","hasOwnProperty","call","setGeojson","clearLayers","addData","setOptionsStyle","setStyle","getGeoJSONData","toGeoJSON","getBounds","Ve","geoJSON","attrs","on","ready","Mt","ee","zIndex","tileSize","noWrap","minZoom","maxZoom","he","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","Re","ae","j","G","E","N","innerHTML","w","X","d","html","O","P","B","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","divIcon","off","MutationObserver","observe","attributes","childList","characterData","subtree","Nt","layerGroup","Dt","ot","re","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","useGlobalLeaflet","nt","leafletRef","layersToAdd","layersInControl","moveEndHandler","getZoom","getCenter","overlayAddHandler","overlayRemoveHandler","CRS","Icon","latLngBounds","beforeMapMount","error","EPSG3857","layerControl","H","_leaflet_id","filter","C","registerLayerControl","forEach","registerControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","fitBounds","setBounds","isValid","lastSetBounds","equals","fitBoundsOptions","setCenter","lastSetCenter","lat","lng","panTo","height","Et","st","at","Oe","draggable","zIndexOffset","rt","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","getLatLng","lt","slots","some","it","toString","ut","getElement","setIcon","moveHandler","marker","Ht","te","smoothFactor","noClip","latLngs","Q","tms","subdomains","validator","isArray","every","detectRetina","url","Te","oe","Lt","tileLayer","Wt","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LControl","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","date_format","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","args","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","undefined","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","tooltip","interaction","intersect","mode","callbacks","context","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","linkifyAndClean","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","formatDate","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file From 430ee4cd2fcb576dc1bb903a1c3834ad8df459e9 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 11:29:15 +0100 Subject: [PATCH 5/7] API - add missing test --- .../workouts/test_workouts_api_1_post.py | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/fittrackee/tests/workouts/test_workouts_api_1_post.py b/fittrackee/tests/workouts/test_workouts_api_1_post.py index 103549e5..304ec429 100644 --- a/fittrackee/tests/workouts/test_workouts_api_1_post.py +++ b/fittrackee/tests/workouts/test_workouts_api_1_post.py @@ -217,7 +217,9 @@ def assert_workout_data_wo_gpx(data: Dict) -> None: assert records[3]['value'] == 10.0 -def assert_files_are_deleted(app: Flask, user: User) -> None: +def assert_files_are_deleted( + app: Flask, user: User, expected_count: Optional[int] = 0 +) -> None: upload_directory = os.path.join( app.config["UPLOAD_FOLDER"], f"workouts/{user.id}" ) @@ -229,7 +231,7 @@ def assert_files_are_deleted(app: Flask, user: User) -> None: if os.path.isfile(os.path.join(upload_directory, name)) ] ) - == 0 + == expected_count ) @@ -841,6 +843,46 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): assert_files_are_deleted(app, user_1) + def test_it_deletes_only_errored_file( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + with patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 2}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1, expected_count=2) + upload_directory = os.path.join(app.config["UPLOAD_FOLDER"]) + workout = Workout.query.first() + os.path.exists(os.path.join(upload_directory, workout.gpx)) + os.path.exists(os.path.join(upload_directory, workout.map)) + def test_it_cleans_uploaded_file_and_static_map_on_segments_creation_error( self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str ) -> None: From 05d27ba85c771531c5c62f8d1e4122032c3d76f4 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 12:08:44 +0100 Subject: [PATCH 6/7] API - update log message on weather data error --- fittrackee/workouts/utils/weather/weather_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fittrackee/workouts/utils/weather/weather_service.py b/fittrackee/workouts/utils/weather/weather_service.py index 6578cc43..33717475 100644 --- a/fittrackee/workouts/utils/weather/weather_service.py +++ b/fittrackee/workouts/utils/weather/weather_service.py @@ -40,5 +40,5 @@ class WeatherService: try: return self.weather_api.get_weather(point) except Exception as e: - appLog.error(e) + appLog.error(f'error when getting weather data: {e}') return None From 12e02282236732b4e0fcf0afc76006f434cd9456 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 15:58:02 +0100 Subject: [PATCH 7/7] bump to version 0.7.14 --- CHANGELOG.md | 10 + VERSION | 2 +- docs/.buildinfo | 2 +- docs/_images/fittrackee_screenshot-01.png | Bin 581753 -> 582193 bytes docs/_images/fittrackee_screenshot-02.png | Bin 396139 -> 396312 bytes docs/_images/fittrackee_screenshot-03.png | Bin 223009 -> 223170 bytes docs/_images/fittrackee_screenshot-04.png | Bin 77225 -> 77395 bytes docs/_images/fittrackee_screenshot-05.png | Bin 69494 -> 69864 bytes docs/_images/fittrackee_screenshot-06.png | Bin 125195 -> 125577 bytes docs/_images/fittrackee_screenshot-07.png | Bin 134659 -> 135035 bytes docs/_images/fittrackee_screenshot-08.png | Bin 85219 -> 85595 bytes docs/_sources/changelog.md.txt | 10 + docs/_sources/installation.rst.txt | 18 +- .../troubleshooting/administrator.rst.txt | 10 +- docs/_static/documentation_options.js | 2 +- docs/api/auth.html | 6 +- docs/api/configuration.html | 10 +- docs/api/index.html | 6 +- docs/api/oauth2.html | 6 +- docs/api/records.html | 6 +- docs/api/sports.html | 6 +- docs/api/stats.html | 6 +- docs/api/users.html | 6 +- docs/api/workouts.html | 6 +- docs/apps.html | 6 +- docs/changelog.html | 840 +++++++++--------- docs/cli.html | 6 +- docs/features.html | 6 +- docs/genindex.html | 6 +- docs/http-routingtable.html | 6 +- docs/index.html | 6 +- docs/installation.html | 24 +- docs/objects.inv | Bin 1595 -> 1595 bytes docs/search.html | 6 +- docs/searchindex.js | 2 +- docs/troubleshooting/administrator.html | 14 +- docs/troubleshooting/index.html | 7 +- docs/troubleshooting/user.html | 6 +- .../_images/fittrackee_screenshot-01.png | Bin 581753 -> 582193 bytes .../_images/fittrackee_screenshot-02.png | Bin 396139 -> 396312 bytes .../_images/fittrackee_screenshot-03.png | Bin 223009 -> 223170 bytes .../_images/fittrackee_screenshot-04.png | Bin 77225 -> 77395 bytes .../_images/fittrackee_screenshot-05.png | Bin 69494 -> 69864 bytes .../_images/fittrackee_screenshot-06.png | Bin 125195 -> 125577 bytes .../_images/fittrackee_screenshot-07.png | Bin 134659 -> 135035 bytes .../_images/fittrackee_screenshot-08.png | Bin 85219 -> 85595 bytes docsrc/source/installation.rst | 18 +- .../source/troubleshooting/administrator.rst | 10 +- fittrackee/__init__.py | 2 +- fittrackee/application/app_config.py | 4 +- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- .../{admin.3f508723.js => admin.4313b7d9.js} | 2 +- ....3f508723.js.map => admin.4313b7d9.js.map} | 2 +- .../js/{app.0e84b321.js => app.f25e8d14.js} | 4 +- ...pp.0e84b321.js.map => app.f25e8d14.js.map} | 2 +- ...rofile.9d91816f.js => profile.98e985f4.js} | 2 +- ...d91816f.js.map => profile.98e985f4.js.map} | 2 +- .../{reset.685c3c25.js => reset.3771935b.js} | 2 +- ....685c3c25.js.map => reset.3771935b.js.map} | 2 +- ...ics.f4227d0e.js => statistics.5228e1ba.js} | 2 +- ...7d0e.js.map => statistics.5228e1ba.js.map} | 2 +- ...kouts.a06ab85f.js => workouts.2996c656.js} | 2 +- ...6ab85f.js.map => workouts.2996c656.js.map} | 2 +- fittrackee_client/package.json | 2 +- pyproject.toml | 2 +- 67 files changed, 591 insertions(+), 526 deletions(-) rename fittrackee/dist/static/js/{admin.3f508723.js => admin.4313b7d9.js} (96%) rename fittrackee/dist/static/js/{admin.3f508723.js.map => admin.4313b7d9.js.map} (98%) rename fittrackee/dist/static/js/{app.0e84b321.js => app.f25e8d14.js} (99%) rename fittrackee/dist/static/js/{app.0e84b321.js.map => app.f25e8d14.js.map} (99%) rename fittrackee/dist/static/js/{profile.9d91816f.js => profile.98e985f4.js} (98%) rename fittrackee/dist/static/js/{profile.9d91816f.js.map => profile.98e985f4.js.map} (99%) rename fittrackee/dist/static/js/{reset.685c3c25.js => reset.3771935b.js} (99%) rename fittrackee/dist/static/js/{reset.685c3c25.js.map => reset.3771935b.js.map} (99%) rename fittrackee/dist/static/js/{statistics.f4227d0e.js => statistics.5228e1ba.js} (98%) rename fittrackee/dist/static/js/{statistics.f4227d0e.js.map => statistics.5228e1ba.js.map} (99%) rename fittrackee/dist/static/js/{workouts.a06ab85f.js => workouts.2996c656.js} (99%) rename fittrackee/dist/static/js/{workouts.a06ab85f.js.map => workouts.2996c656.js.map} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ba2b305..88df6c8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change log +## Version 0.7.14 (2023/03/08) + +### Bugs Fixed + +* [#314](https://github.com/SamR1/FitTrackee/issues/314) - GPX file is not deleted when the process fails +### Translations + +* [PR#315](https://github.com/SamR1/FitTrackee/pull/315) - Translations update from Hosted Weblate (Dutch, thanks to @bjornclauw) + + ## Version 0.7.13 (2023/03/05) This version allows to display the instance privacy policy. A user must agree to the privacy policy to register. diff --git a/VERSION b/VERSION index a48658c9..a597e4f3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.13 +0.7.14 diff --git a/docs/.buildinfo b/docs/.buildinfo index 388434e9..2e857574 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 27f4394ace216ce3fd5ef2a67c1bf1ef +config: 94de61784a672553b4d9efa055ecf7c6 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_images/fittrackee_screenshot-01.png b/docs/_images/fittrackee_screenshot-01.png index 313e462a5583b8171713bcbdc096dc1d42959725..5d457c83a353d14bcabd021da0f4aad50c8d8015 100644 GIT binary patch delta 527732 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

mCrq~UC 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%0Dx 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

{h{89kM=@OPZBOxpu4?zyn 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�t?JTTC>IPI8Jf6{q+&=CPtG68O+h+qS(#qETyiy1Mwg^J9=sG@Pb1lafS{J&f!ydNB37R%S7hOF+Kg3BJBn4rWg;?bLEGH&@8$GqLN|T;)L~f|me16ZV(1rS zJQ~>idoG8Q!Gdq9THOT9ywI0CKW-QSq^?8~f|bjIQ^OcZ>LCaG39{SXma)6&Ef6@* zyVXza+l>*Cyp zhwVb|_|DnnZ3LzSXqdi_q7{5`UyS#o(fcGyrl{Nxy}Z>{Mfm_aj$I|T>M)?G3Zc3~ z>wm*&!l|SqE|a+xiNQNJVeU(_HTJ497H>$p&`vVUvhvTaZObp-U{-Y^Pd0n&-Av^b zgNWggS`)XR&#AfH3F2vAz__1?kgSrWoU@fm2vuOxG|=>`K4(Y*&2q0tue?Q(uPlnl zTgsJ*ueIa|1!Mu$TG#t6(hWdSPA4WApkbZ4?4!k0i})7pcK;-QaCDe zI6iEkcJOM;eH0;|N+*(p#r-`&zjgI*(iNvlP6fqXd2AYnb19;+(Ec%02{mYXHC5AZ zR)SLsZvTAK`&Jh)L}@=T6ZN8kxOl3@&_t!?(u5r6TZYQ#ysKX)syZjXj5v~8PE--_ z*>HfUC4`Zj5d5QfZogco$uQ{#zZVmw+&>nWT=``-*Ru(3zELTc$Vv+;^o*D&{3R=> zq&B7BtAb=T4z^7Q@!C7)4&PPdO}S4m!$W%ygjN7wkP(dy?!J=x*XHj5?L?FsCJVtl zm`KJ`;2b?eBZVVKw}Ee5T~ZOsY{6Qs_7&kEj&*~r51m~^PbM;VPT3(qI!9HZqXyL|n==1Dnutx0dA0P&r76+2~s2um~LKBRL^ znO6_F)7%{05I4crM>$jdMigAcVp-tGQ9v-BSp|P)g@B?H&iR*S4yd z@k%25OqZ@at&Y%3XU^Ea2df_RP*g5Ir#O=)o8Z=D$9_Za6UONA6z1BGr8ACUfA?YO zpZ9Id%QMg)d^+I%hI8Z1v=!(c?e#teJc0@QXPbA|u{B=&QNy@jzBLpt@bdEB$EkFP zBz&i_ZqV|)VI`PJ5@6Nih4+B6yVCQpC-5oDJA8%szLx(9*t+}CbGXCeO(%TK>ow&? z?SFpt5|;jf2fUv~sQM+8>*Rau;r|hE_VE=sz1?cm7xO31=o#d9{tGzixA`RXkEERB z8t?pbHvi_<%RiK0HCoBN{$6E6(}Taq(jtr}k!4MWl`4YybGtrBG3 zJD|Nn;YS#vg3SAH)xjH(Uhyu|IURIEuQXu{&=Ug;%;CqU0g>)Z6tyK0Q*Ut5rAaH$ zfAcR~Ny|l9$f;CRg$jjaZ61Bk67jXFp#q6-U7%M<--DO`J(i;(j~tcITMH|V9@nmR zTd1|PbvTLXHz#Xc%PTr*ktqybW;=DBwxm~zN+A!2`#p`{+1(N5tXJfyC7d2POI!yx z9QJ^IE^#d14SWRiPM^X*mcu_$;}`1EnECFiD3Eqrn_l9q5mqvY31=QOPh2Fo2q|+v zQ%eH6?q*Nm2l*gw!-ueie|LKA0_R)Y{)N9rV`?QcN*H~jBcqKmZqh$%L=9`1H6T}l z)vShnC%r~p6=iHI=K3PYHM$p#B*N_K0B0@@c>(KQ0hGasAQIwnl~ugh%$acEa&5Qa z*=V6imeqirZA>oXXjrx4B&85zoVNG94^FTIHHS}BO@L)H%V+~hF_NhGT*SY*Z0Ion$ zznPc}S=K#oTH3aMFBrI#>(6uOz{1R-PRjrt5j%n|1B2490F)PebPQg!nwhGIJ@7p` zo~p(2(~BlE6tm)QnxoOzIeabN6+U=a=DNc#wmWy-i(Z zs7{zXp8*6VH98_8;so3U+Iva%VC}j<9}>=5>MAq;vg}#P!D1>_FH5DwC5I`kN9qmm z6GS6os}*I?A+z4#t1XF;I$|H_q{WJ(PhH+io@IuSl*6PvZwpan-wulMXV9e^Lv1+Zv=?w@`}i;9z80|e;xSKpJk0|()&S+jZtX{S^$UKApM28| zbhE3^V!Z6|mS6l8Ui0yUy=Fusxz~dp%9l@K-c*@?z(@Y--F)!VAI76Dmvj40o%6om zc@fWe*?ai7-h+qVX@TFH`Q2Z5GynVFJ&xb{(UW}Qk6+6(U-~xg_ku6wb5~e9-G|=E zOJ08?{Z}2*)mtCrcV2%pU;fZf$KUHA{P+w153bP<^Yj1hHN5N{pUO{u(X1qpcKq${ z{5H>jec!!!$}_%^M_+TWz;E979$x;BSM$P0c<%AYujH4Wes`)5zk_Ez_f5R^bHABy zxJsD6_s{sLKb`VD&;1@A>aOP(pZgkq=FL~}g2x<3h}`hbH}ez!?>}>T`)aN`fHd65 zD}VY`yy1$6@ys9n96ob$$9f#r+I*rMGk9cwia+48IC5x_;2xIpJu*5(MxZGtk}4W| z1b4W>`Nf;K4=v;ePpb3XG%q*(N}oEcbSSedCzJ}69;IgwOKBuV>c~#D){I5wo@|eS z{GkUyoN{2Hbvj1d% zP84^g7L6rgQ&h6|+K@J?Icy^I5o-d`S|r&FvJ`()=gPQB#cQnqm)2UW&0bBW{9cSL zeQ0R=U7BtOlOmE7j!61GVx%KtsjF%a#K?I9ix#lupBD-*%7H6s1Q!!SFwePwr>W?2 zj{w@SC4gv!5jA|bCKB<;B=rnd41qy^>;cu~0x)<6Fy~@axTZ*8Qw)T@A3>q~E?O$@ zb22pvVbw5hX^W9mNNScojYp-)N@n9_&$>*DjlGik%z3s+&{}ZLQ`s7CJ=XZ*rD;pS z8|k&B*Os7Js+`Eu!3)c*T!L}6>#1FjF&T`_EV&#O)CXG_eVI`j)$Ri#GgH)mO2XTK zJp|bq*uJUwS!&A3xJk|4AT2rb<&OT5N|us`Na`c8D?wluVo>@v(YMey5SxT90!ftU zL8W;A*^>5c%fXQ|h+C#qi)8;vdxRJ6na1+!n9hEaOYh01?Fk`{b_>~7MaukV#1VGv!JoktB zvA?_-p@5-jCgPZrypi_9K7KAK!dmo_gKgnF)M<%9lQz>)!Zk-u#b` z;&UHR-n0H=yy92?juZF4f^bM*-|*J=^5M_>BEI1G-SLmPd-?tQ@Tkw3@Uu7UkeFeC z<^yl#Men(WANtWp^Pt&bk8RFd-}GVb|CmQ{x2tNt?yBLxFvm`$c^4P(L@i0$+p{4A5wHOp^Rg;p?E>1%i zkrVg88<*J&0aCD~7ICQBa-N@6rJ5pb)B~xyB z%s^WGdnQ>b1fObLoZ#^|$zc^KB`Tj~#;ON_(-NH%sHHON2Y9E-`1}8HlWe{xy@I`2Yr|D|K)E1!fOxKwKB~xXv()AX4 z1HHn+P-(?m7u0ibf1COiZ^Afc zw4{0)qZp%Xb(=K(iX42f3PGuC&t|p2yTD!~_u%zLRoXrvAyWBuX|_fs zc9Fj8=`_-BDP|MQMo#1I=Fqo^7!+?jGMVBhHFjDdRYKefF)7jqgB9IIgN9Ajr^JQ*p>C-mR zgfT_hRF=B()P@35u7I;K9nxpn4#ql{*Q!H*rv^nPf~k~Bg@gq)XYM`Ce$b;&X&|%T zJEd<@o{##h7B^K^d}vGz0uM70#0zTlHm{vJzRg;^dW+|$F*p@e4Q&a6;!YAmo%Z-| zXBqg#;DH(pRx*Rqn`)02bY=$U1J9U*$#llu?shjq2;6wnP26YEY$KYush`Z=3O|8}1B)OT^sgLe4Kzdy~^O>^$? zwNK|~o_K#YMcMwlH}L$IzM4P(&@IemlY2kt-}Bs`dMux1%V)mib-eT6IyUb8`F!^e zJ&kX?Z^g~;`VGGSr{BQeo)(VZ`w{$qz;nKW5B=anzKj^lsz z%RKS7Blo-M-Tdj+7w|Lx>sxTY^K-oD_5Z+!Z{8)Id;m{=_A~jmE8fg^fBUb0@$N<9 zy|1?FWP<(C;sWZT)(r$O?)=b_{pd7)mN`4wp(9GPV%tFK8fdl`@f_5&8Hp!Dbt5v z&(og%8+_!^&*T-~`w%wff6f1YeDRyO<+Hw=>)Jo!wTBMr9p3T>Z|4)oKA*=v@QCjSN;XRuz#O_5I@Er{CVOr z&$#D4-@KliZt1x4Q#SLdwJvzu8$QJS{?8}zz}XSA%*Wr)Yj5}rp7Nl2-*@ctiLFhp zy23!biGRAj;xoQ{$zI<4)T_A1$8O}q5$<;N=kvUu5X|EJ{NaI{{onlFpHF!Fk9@`* z5}?e5xh+L_@tjKKls6539$3XYG35eeVC4-!ml@I@t-(2iP?2;7u_Lt$jPZx0n%*8O z%CdOM%)=$CQZ$1$dw;qVG@^&I!$eUNh|&>LC@J4HF|~9lgLeB-#|0=d?@jJbmBLw%b_isa=it70!9? zik|VARO&LjwTqRtq z!#x64RtnK#Z{fXvXX56}Y)d75IWdrtag&nJ_7w|TlcIxUvi!HOh%*b)jFtw1L9E4A z2CD{>9Q1~`2&9m(IBc*;Cj%`PEuOb|jx|)qBBsKq%f5NN!9+{19YK3k(nayAbSC1= zUh9fJy3CLqm7O!b}GH34_*vF(?ibJ!WDs6T#M|fRxMmx$hIP&oRs9R_qlrvo`zb z>S3Wh1>BB>T^3>_#FPO?6z5zHz$k$j+4nDv63>A_o&TN2!>cS)wm5h37?k6Fw>+OS ztz9dt>m`|gpJZh%JM_=x|7Y*b<25_#I{){#mUGUt+}m5yAqxQlA%TD(2muX5c2GfF zaKWE4fViNz>&%Fb_(D_^XMhnEa71(j1W^f#1M^crL2x5$Td!BY(w)BjJm=J@s#D)jeU=4AJex;>abXm#t%N`Lni;r~ImjOQDTN&xP#wU17u=!wWl))9if=)>f>ntgybZ zo>`Ucl(rn+Dy0Y^5W?*Q1>R{pAmvxpMt$@?Uhr%0VE0e_7Vmt>3SW5hi}=A`dli@d z@egsi2LJhg;X{vo9xwmN3$b6kil_eY>-pP%$NwVVT77{3{+u`9p8m_c^-<@eKKqya z;Ippfh6tBV^Jnh*@!#Yf4_V>bSN}Rc^84@L%HO)2cfIy)G(YfS-t*178C`z>clJ3v z_79#%{Gk^Uf8hoE#3e_+W!%5Nj-UU-oA|b0|9xI@NspVZdLG~Q_ouc2JoM2+-0!7- zFXh+H$;Ipq_x~n-^_zd1yY7m7{EvT$XZ+;{dGaqkj+g#%;u+8U3{QXcGc!OMZ&=g zKgFYe^zJ(ot($D$ff+$uRV(K^ZxI# zpZeje`Rn(LIr|Y0f8tL?dK*Azxnok_%Pa-z@T9ui`Vw* zO3mixl*9`Dy7%#-ckkmzo^v<$y!Aatz2_$%{vhw#_ci>FbGLaSZGMKo|I|5ue8W?E zc_Yz%o~u9EC-(o6?|=CLM!mCn*mpgKAN~401>B5$;_V+HJmm4*V;gCs{lq8vm(`1S z?l}T+%G$VM-*9QOGVHN3xrxnrVS4Pl_1Auy_g9AW2e06dt{GFEdsm+P^hfacJ6E@z zN1_(HuMi`t>$YlvQraqcDW>^<*|b}si#$(?L@#0yQP~iFJi^+*ZNW7sGyTH6IEh~6 zw9Gl6XNu<&Bnd?EpaST0>>^MS=tRWRhK^cktTi}iiLK5uF-cp$_f%J(Qdn)icD0WxF3&ZO6~1mTbiUx{-hZ2tTcP?LfBoJ?DPJR@V;B8OcD z73SV*v$3IOpv?ArnT2A=oGGA6=t2mAb~?p5my=mbaXterD^q4_aCkqVs%ombDgXYf z^vxq+j7F&*A-2%oS`cI)$yT<=>=^+BLY6rmclOQ-)iYltg%ojx<#-f88B;0F!W_t% z*#sEP93(i|{fFc;z*i7|F(I#OR$Cek12v_>A#rxRQPzeibji}Xn&>Sm6lNiU6cEv> zoDgfYK^c?TR7zu%MvFlZT-(u3TBe&Vu5*O0LyZi2P=U%!9xVo~485wRu4?MK#?}>f zYOrn1sNIAx#_NtGfm>^&%t2ZpL`CNV<8D$>+q8a zG8v&%gSG>d6u--uh(2xu4zvGb4lt?nRJb)dNb>iH7Urk(GyGiVG;rM%zu;JS*dc;T zBnNI9Y1@E|K~;+Wo{DO_pP^(=PdVv|Fq10Z4qw74+YqIH@exw!5Yr&G2X!COc|>eq z^X33$V!j%X1cgB*g`T}LQzA&ft3q4d7G9M@4l62}6TDZK04<}b>zdlt#1!b9V`F23 z;c!S@S9D!R2!Wlp15)m^FLU!B{b$~@_ex%R#o1H>cX{j+dE9GW#NU4^aQP*GzLdv5 z?!sJF?Z1S7d++``K6_)tZCuT}RvympKk|Hf0%|eNg-@|y>L(id6aLFSd z#6?$K%eC<#?Av4c?E9|f0}p&8_doBPvKu?$Hkwbp`(GG;!_)YlOEPn7&z_Z2F2?nR z_u_&3_1s+j4wv3*{&yE$asm1iV_M*Zf|q!Ze|*n>mw3Q;d=r-q6>u+}_U#w*&2RrO zYft<}Kykqp59h&q1ZcR|y)NXyyKkUl2c*2kxXxX^oj-l!A)KOy}KBi{Gz)4?QiG3?Kyn+WA4S=meAglpL^w>@hmL$e`NpT*_ll+s|{^BOk_AOV7x)Z+jn~_?oZh=L%&p9yrKn$5Zb1 zHBaPa&)7}(@9*Xp|HoUo>Tci7ckCCKeug)`ca?AXZ+o|LCDIyiyXqS5{Fv|K&I;zX zWZQNurxGBu`Nc!rv{`ZYAAT}FbtmD|fAdCv{`2p>mrH-+3NF44J#VEH#+W&CDaJ?) zA^TGnZ$PaSRb{EH$v#la0OeBQqKX4}vNf^lgUX*9T}$%aNv^|SOpWBI)T4_*HzD|T z>6$A<+nJ_oi##>>j?hh)he&2MiAAZ3O4TS`A*wJAlb#R64BiAHj)>24sZb<966Oql zOC%SL&UF}FQPr6-sH4eJOin%6Wjj!H%pyeu(Hg1hB~QuB#?ji8pnyn7VZoPN@*EVA zEHO(92FlD@6~TLa@W-C6+h_&(vzH6~NJ;@hPU4PIjP{pOrZa2O5lZ02 z+-$$FDic|TnaF_+qDr8|SGggx5|!D1HQPL36U;pzbAg->22#5D-h`1j_n(}xv$Fj_ z_FFqHM`@`xO`KWp$e9;wDj^-)0iPHnq5O(ViLJBoGTX8#t>)}JB}d;!J~r@#l4d`@ zEfI{hh{|%in9BT^8<*ulACm$qdUl1?o<=Lsq7XEi!gka-)IhY#Ym7+ozf)U(?l-tV z^qy|&NX{X?Bk4%c9<4N5XQyYBw*54&6RJK8DGY5&4vFN&wR2FSCq0PRgT4$es)5W^O!iQN2 zx{~?xS13%>$Mo?&tqsAC)o&yICl>MG&eSMwrc(PNF z?|_s$?aST5#s=eE7cYPawVVCB$9#M}&Q|2b`Y07m6>$N=ku^rUFXC94Bw>A>BiFr; zXFcWZMGop1uUtVReJ+32f92pSUd69G{V&+{$RFhSKlb%pASZr*L9QLyWY7NHXJF8^ zT=Tbo&P)F4{e0?(BTWvodC&V}Px_AD;K=5Hv-aBgiZoWz@`~@jAbp^q* zbMA763Q22GX^pF1^?$f_+VSa^Je$Y7WcIgz#`k>BKky?j`<D+AT)A+u+qTBgpEX*r;*Lgj^X(|4!!&T^1AER(Jy&9Z*z(0I;OmaZ~fc5 z@YDbO2|R4$qrCaXi}}%eZ)GCJ8$ZM!yrakW{_r}%Ba_4 z*R2WDrRtdxdq5U_CS?EtHCoGRS$xXOL3pYJk!jt1OjKG)+T7(RCfIo6?18 zIpH^jxu^?hq6+D0#{QLsyg$EIS(d%~5NNyhl;`$;EQ}z_fE^)rB=5jG&<*ISFeTG` zoM@#{TA_{EI{vzD9;P$1UJ~T19-v(A%IzaEmGBBxKtv@9rP9sz{z?Uc4-__HEIw_e z7*?V%qKVsg3p20O;sJN2rJb`B;bY=FDKpHx4?qSVXTGF9cv6b^kmj=OBnh7)h6U5* zXpqu>Ex^1~=9UtIvW&c?O`4>N{5UQUS`oo&%dY+&_OI@mOK#_5bcvC=%nlCGmoSO^ zSxO7GwgeaG+78!wV%rj|CpLcW@i-2a%3B6*7lUe*Uaz6w?^9J3b=zY!+GOHJw2VMp zPF_EQ;N+YUR04yhzGC8P5^53fRb<&#JpF2aO0Bzj`uQmkTfrBQSmi^p6a_c-j1P5l zTwIrflpJmYrqZAkUJ{WE9Bbpjj))RT&eDZM@PTTWFiprw>e}Q$F2%xDAY~v~sToK) zLncnlESp&q_!w^SbkItp>c#robsb&kFvd{T6}2_g)_mCmGa}5_ofGdPWGR&9)`lp5 zi!XGVy~Bh+M2ldSAs~q)N!ed?Mu&?+>jFv?se`Z)Nj^WcX4RmptcW4zfUD$xi?u@bH$Vc2z8$hDMS-@c{%(?Yq;8D(4%JOj zNl?jB_bYn!3byKDO;z@|f|?!Rvh;gVTg)ulu4OzPF>>of=QBIA1V_p#*hg#~qxyVvsQ-+C@D zxOj+v=L>kmJI%>inKESeV8nHQ2Rm{wMPht-jmgTTtP0$;GmLIsAbmO|RDB-wpMHV= z`NUbFa}$5_yMM@AdynQhKX?WAE&iYW6YtykvbztL*FZSLr@l~g(WCmDb?LY9S642!#-IL+|IM$*$MDkcItNXE;A3z2C_MBD z+7=!2)l+*-)L?}$kQWzV9?)A&28kDXvv8Jw9X_^(P zYJd_$42j@f{5cO$j@h~f`-CqyG3%ml=5>=5mXMhP%MhknO9>fY~)#5`I)HY()MCh zW)=%K6BCdHm=IG=Sl7xdd5e`$osdXfmV7JBoMlT1lZnpb4QN?_&T^*jb9t{6GhpjEl7B9Pl|BQSCXj5vd5`aW9%D%eE-(ob zVhmVYVXdXMHPRO`2>>Uy|nNurK^P$^+l zpl_#3fjP5(hc`!jKy0%dHN}MPC8SvZJxU9cq^zld*np$$NPD@KBVZvW9+> z4-0Qeiua89m$rDhp6nje+_O3#jGWj5^2@oii80}SSxD@2u$4kbQx07y2WD}e7@wjb zQB$cNwd!L{g^1vNX8aptFv%j(WM9D)Gh;WD{gIX|@mAaBhb;ONvh{%&wfMVvrxpu? zm^jrJn+RFbeG2n;%i}3Nu~C)|p~@JDl5!}R0DxbE1;uM8T}!NeLYV2^wP>tgfkaO;te3l$H{> zDPZr+lU?gsZadft>B%BkDbrKup2@R4oH~Wjo9w%r7z_sN+j|!4YX>=W=n#|1n0~Lv z;loF`;l>+xK*}AEa;M$eEyc*9o)FZf_u~P7hhE7m-uW<|^NqW?=^bz4ZSKB2=WZun z?aamZ;2vLm1AqR$NAjP)PV=Fw-pNP(`T6hec|RWbrC0Mu|L{P5{)%(Z8=vQzjkCD) z0^xHXznJX=j)2*uJ^u}@yp)D`+wl>JfMGn zgm?b^$C##jkpOdtb2$5R*YNT7;XF`2$LrttK_=lI9LwW2O-78>kaN!-pxll8-9LN^ z&lR~Rnuca_fG=(YCT4;jF7I&9;z5`1=Vh;dBOm^{CvjQ&B(HkoC%NY%p3bfvkn$Fn zNgE&iJ6?754P0}LBe~D;H-GXPK7Pl42k--rzAN>oU(fgd=&QN@il61Le(AwnIXB|I zj*tD3AgdSh;0ImCeg)w8*Z=b_uCw>#*^jux)^jxX5nk|==kV(E7+(6yr*rA2PVk)v zKg^%M=_6eK@h=hBv-a+* zd0V`MU%u-}ZesEo-uTbE`IhJGS@dD*__x>n4R7B2P=4deRZ@sVm08y6?2CBN@OAv@ zTkgqSzxixN@4uQiUwY|6lYaSVYFJX+bgtS}OZOz4;piN{TVj(&`H8z>r-^r&@Cl3#uW zY9&~k0jK3b7QzA)UG^TlSp{tH__i%Ts^kC!V-Tfp(euc*105j-#8}kqGv`=LPGfe? z;k%ByZctk1aHBI=!Oy_3EG4^nFr`SAM2nW3932BHE&3&wo0{Z*0{DoC!AL`0)fll^ zMi@L}H^OU&QV~R9Z)Lx_?2($#M$H45DE)x*gy#|YEVu-5Hm5~}6Q*Ibk;XiTIr0ivVp0;EU?9_JkS>oiT>(DZtlnPtrJL980m zAQj)iv?QlbOhyxb#+&0A=N0cflQ3aAonURnu3f7%O^>RoNU=|Fo@qN}+)kK=32m6* z#1X}TIz8)&l*+-BD5kz)ecHz-gXlyGnJt#)2pDMbG`6MEB^h}>F~}B5W&v6x4{jq8 zr?W))gsd)r7F#Q{vKj0#<&Y#K+KotT6-w1qrcbZen8i@mTY3-Qk~tQmEZDC?4tJ9i++SpF z!!cuT%WZ%?H zWB?M#b4EqRt(%XtZaw1G;@lXcBchbw!XT&EU1VDeh&mD#`Ox9EYGtJqQuR=xuu7wY z0tcoVVsw=cnY7M_a^x_xu;iJo%GzE@)@5ffT+#1;^)k~k>Fh5XW3l?sOMvdF%vA^; z2E9IKpS71yell|S@L?w73GHCY+S(Bg+;kHcU$RrN?|_s$?bd7II$rvW@8YG4(uI5f z@C$j-v#;b=U;GPP`P-iUx%c4*e(A|Puz?dP=w#oO{M<7?$}j%rGkMTtz&)?LJ9jSY zf($Qz=jZUiAFSx4Z@K_M~U=GuQtfKl{CJU_(~9=cAs%uYSup zs2x%FEp8hh{X1Uz#~&@j?K8aPPd-ESfW3U@qwY#=`>ghA)>oR7FFNB7aMe2w(tp5z z_wlH+w!NC9W@XsWO9N^-@po1SKE$8D@-MiiJlYSw<+XgM_Ym&>-M250619)-_|b3V z3xDtizUQiz-uZXuDL?+;qrz*pw}V%IkdNNuYx#-QrDyc7f5&s*cmo^u&3w<_2T}ri z-^cR0|9o$D>9cs!Gat$gFTIK}7DjEBVFi-pUJ~{kyy%4Y>CsAHy$PQPRG{jr{R{ z`BVPnb9tluk5Bn`>}8MSRloGLoORZ{`I)C5=C}Uvk9hnM*mJkb_{kr>FX!EVMoF_u zDJr8&>Y&L19;bP&i44|cAZu1xsiStznbl%JH6SK~kphzx3QI|0iloLNbOJ%L?RX>* zlP8MLVA&Q4YA&92sv< z8)eWXOrf?lS{Xv!5L3V!TiT9)V%GowAOJ~3K~$Ion!0Xq?G)OIq$5%1r0*<`IuQsX zCBar9QK7ZLXiIH!`lOK>tL)rAwCkpHzGWOnOw$O5BTDXZB`LEc3xi6r)c>*|RjESt zNIH?y))d}Az(ICt}8^C`iN2X5l?pSza2uIcp}JOxlFY??wV2Op$3j;rcIL z$9S~C>aKmPuIypBvPz7B(P*8`@g}43CMm|^4`}XZ;_pW_&KdCbTQz|8M#@Efo zNu+d?4<7FW#-ycnz)+iihMw+GRR*gwv&5L<(Ul;^z#t58vBS}lT%J$Sq{56n)5nIV zazo6SLLntWis+QKSm$U|W))SSMdlK6V-l@{!xK0-HjE?qsE_g{R}$&#P5LsSZ380( zm9-dc==W`5Y$=R2#XofkNId}Jz547uV*Ehhn(MQsZj zn%UYGDfYb6=7=#{lA;$Kdh2<8&ihanhX*YC#9SMk(mewH76?T_;iyYq~8+D^M&ws?qFKj)2%|I_#L z^owrUjwT)XFwg$A>-qNQJ({n(9hrgN8td!3-}3=~Ru6=-Th@-5Sib-FagRgPo~m>PnHU{J}Rsc1}(+VrTa zEVUGWy%l6jF_v%}#oERZ4jnm2(jGA$RYjCNF(WW~MeG!KgYt&D>d~wF)KyJY<&YmF zvkTj{Wpi_rvEO8BMmXtm2+AzE)M&KP?9nUiHiMHCvYA1aq9z4{wH0+$voTp`eS8E{ z3EHF#2A6(L#n~?%2c&f45$)y%#`dvxNTc_EP|3=?Fi=GTYfZMDk1^s?z~cxZ5q%=~ zNc52qkARF=UD-#!zj{(ME0OrX2mh7#T>UQg?AgVhy}N1KDQ%Zov$m=@|AGs-!yWF( zIeX8g-y5FNnD)VQWa9`Q_`pAL;HEEer}OU0dFNip{yUsU=UT4+(&xD8z?V31=*G-{ zrmGr8<4vaRgnQimK3sI?OK5uiE&i`3YMYyfS>HIwR12L}G?k?;!Brx8j5{Bgwhn)D z*rq85C0J?L+nmKpZ#RR%08@NH*VorLc<>PYevjdBg{qAAW3{$zIdbF(W4BJHHqcd~ zstuw}XU)j>)H=_!b6ePlDM34J@!nH^R~5#ZEx|e7d%CtmX-!>K1w`@;tA;^U9|d^& z6j4<4)E)-)D#O8m!xO``2Zig_;Ir%Cx>S7H3V@)YGLG|`FR{N~W2j-+SXKus42MI8 zgTWaApra4?&a-)BgZ0B3^Fnpc{=Ka1U76qWEag0eP=H3g2<$0+Gnq`7jK|r3-_Uh* zF$X$C@kHebDxfr2Z4lI4_B=--6d0Wk6s|uq5oIbUqM6JUWT~gyTHYPFqq; z)J=^xTgOag4NYa|aE8`$+VA8Pi^SPgs8G|dhtxI$8_suZjyLf#M)f+x#ACig+s@N^ zzh(W|o(D6VyIq;P@hen{&#XzTQCO{Mou}f`^hriY!g90WV>fAwr0#N};OLd;a68V?6E7 z%!NDVhc+pZ*T$4n$07fD+ZGSi2r`>y5#k1``qTRmz{R(w!@_S z58o1-U-}~BJ?F9CPWa?I{+VmfyWdH?<96Ck+iADyS-o+P0~g$Xk0+f0%INe9YYe~f zzTCIo>DOa|7cm#*ryEKcV)17Skq}CHYD%QwNh#zs?k$Ol`HQ<0inrtvqbq_X<)0~Q zxB_ZXR1y)@5yc%d$yUV*?JIhAK(E(F1iE&La}z@BFosg(3O;&#w?WhaWg5~901>Fi|%r9@gB^-+OB0Z zUgw7Ezd)@j1j({&b^MJ&2!R6!Zs5iP*OOvoWw<&A^#JO+Veh{E^!fwNIp@6WKcx+a z4bha?-aQy&sjBLPz?(6K;c$qW!p0<$TuYRQ zGTE2yOesTug_4S_gpeYHFt-Gl1=GyvX5kbRvzsSZ zXSFl63hXkG^LGt6f5lRp%yg@(iptt!vL$Dpe$Hi(&^ecrby-+6X3t-f{qRio{?t~} z411u3SW$xjop75ddG{lSoaZ!q`zJl47+${{hMDcTCEQi#f{7i}U&kGiEGTAF#J z-u!icS46PZ=I2%ztU1|Su*IWSE6MgF-2_+UrKTC8t3F6Nb!MH{h%;G9&>NtYMHkBp zt#c4j8#L3nPV^4Zamh1S&>F1Oh=A2_~CieK}{) zp2^Ez$`=&KVLlY*bIO0-J~ZZ1@7aQPta&%P-zBfqEk2fM0dj8fwcW;^XSS`1TNe6! zeTw5UHe(5rla$%@f(8^?S7@oT^t}rX4T8;>MCu2 zJEiMfQ6rSFr!uc+HcKMvxV9i7!s_ZO`}XbQ3!ncStdeuLucl*dY4_nFJ89Or^nma zhL{jZC1BtbH^W=Noa_PSLL`Jm!IE5mm(3L`K}vv1-a}@VrAvMmc{7)ysu<8QA(B&E zvwytM6QNe%B!hojFQ^pfvBJb5wHeSfJ=*DnuASgQOG+MN4Q9pwh@RMOk}8GRA!-gj zE$@CkffgTy=oHCoR5BQ;sC1J9EUG4_d`7U=QrRkpVfaAj9i4aCPcsG}ln?`djaC|K z^3PXQh0;0kdbVNhx(??$+P1|xhf+dPk)*SnI)x1CWjsY#WDKiYh7n05ibLf1vhL#- z;t4GQD?+1e4ieDuC`cg{NwkZeiEr6-;|xMAwdQm{${ga!-o5*{%bo8&FEBz399}=n zNB-@fIkjvm_I*>YCkVAA9$ljZu1D zK=qn__O%jWb90U1@bnC6Z!L!ik)y+e>bj<`>th3MDQ%H3Ypod!28cjAaX1f=$s8yy zR*q++sp9VzQ-qKZ3?TU6iD{O44l%@~xp3^h)FOnG=-Mg7in@!ePvM4tjl|kCGmB^b zki~M0fr;#EBImC5xnS=QZB1rVAE%#y9Oe@ulgXIzWXyOvp>11cE2BcP2XIwWSDC?F zH#JSuV0xBbrARIkLqr*!$71K`rXAh1%OE8gz|>Zuk`QAF=SVR#OY3?I7(HX2X7*`j zr_R}!qK_JFo$F}Zj)8Z7BIt{;E5y4oq^yl0M)@bV5WZWtyqHl@qI>C8Dh=^E}=@-d=@u^%RS?29(n*M;5 z{;s*luhQAq)f$WLgl;m;_9trL1tKNL#~M{avyOdunN`Ut2R()O71+5fNs!YlEGNIW zwHS<8D%GRWnMJC#W;_`)?Z!AYCKv}nk??cixUv<_X<{eYIz_QXj(wuN(8<=jd03I! zzOv5-zT6^!a<&hDN=x$WGqV711^VP>zN2Qo-fSPgG5gcb+!*FdkXjncDP@^>5-92A zv-Lftlo_5uGMh6jx-vT#6`=W87g`R+eeqn)3iWJnp~X_^CWrosTHvY0T4M&zyRv?2 zt>R)@BEPHzLBy>MHy8?&EXUUCU&$ z$;!$K=bm>Shu1rH+73v$({2~d^0iNUKL7vIc6wr`?X;b?({4_ig$w{x>eT4xDP=ic zh_QrlEQ+_Z{6pP@#WQlv|XpjJ_ONKZ69B?xVn zcpodYC1~h>Dk?jmKU_g6P1m(_uEm88twCvh(vS2@o#L+S$pE;dpBy1NeDZkZ2~A+xx~~&OkSVR#sGv|& zo!5kD3j$>ezu*HYBy>~^6kNC}41MC$M-ts66-H488GO`Ce8b_%E>aTqG#l({ zHkX)B=@_ua3_z9Qi<^N*KTY^aqF=2t*tbHzKg{xOnSoJ}uIt#`+{C&3K4^M@;b8H9 zUg)NgHYBQ^Lfd=@=VL^j?n;xgJqGd2fj>$Vl`$Btav!#1{AdHEK$!tr1ylqTg*0uE z+Hf+dLyAK3ib^#!y;ZEKi77Ikj%eE!txQgbuj`yJA1qNU(6JpJ6OrRGC}#=a^Prip z1VEW`2-fU)F2AO;k95!W=-EE~dPrk`o9tQXS~jO^v~h$~9;FjV=F@fE6r(Gux@J68 zbn6bW39(>%f@$Qq`=FE(TN1x_+SVtf1R4;_+>;U^Tf2;kcP*eQ(6vHr{@E0=mu2Wu zUWfWJ_q8SEAsaggZQPR8HD7H~nzJdjDhchg)N#uk^p8Z^=+Tl1u10|pb6kdh{46M^ zu4|N1i-h7~80x_i$u+|5Gw(W>TWn(ML>gp=i7>4~G!{GoC zp{{Fo@7~Q_?s6CQ??0P6+~FK{?b^lR^_`g99guRT?X;b?({|cU`zmfJC7h3$saJfm zw(rkog-HHy%0-`#xDe-zren5$=)rZQ;E@;+l@pIc3@8#>z=+1E1{FGJH;E*i0v{Vx z3JjH|Qi?WtIy%x)szoZ&Cgm;4_pnu;Uaz0M*t#h`bj0MaT4Ss_y3SFGQ_;AKkOOdZ zW4k!Db@%1&_QJoGl7e4?%ztWn~>u$ zD@77hAK2LN9GV7PR7>Qe1w+dy*uSc{(^(3&q+*{Ht2u2r;#|jnw4E{wVXH|H3(IpKI@ZE?_m;mMMm~5^1fddEt<(V~%IaMkafcNRimctnh=Q zrK)DGPUV-{3m6<7Ze@sff5<)rO&aCK1gMbPINCItP4}|K_WiLnD~f5GM!08?R7A>d zI!TJP`sP%N;Nq7gTHreBLYBvm6cbt`F& zBxNKDd@QT#WxPd|?i3sWEiRQ+fJ+?}t}L|+^y)KGhyNvmc0@|C?fz74i8mLol&VH>%eB9%V@z{?agQ}+RYLMEtgAsq^nFBAo8;((6dcTnNKg{tjZ2kZ9vGHG0 zD&5^2Otz9eYVQ{nKbnlp6xZ6Hdt|=%sIyqKiU{##l#pqb1bJ|w%VYtP|F~yTxWvDQ z)vScr!~lpHh>OX|_|>BIc`n7!^d*XYkYE^e^wGq7pVJo=XXw?IRxVG=UbSHU36BCT zo=;D(Fu(lE_LArm2lk4?meHuc1#jN0xR%c;>>KrFXv~#XSF6y=+gc-W=cM0hk<&6Z zeGyBeBqixm_gxg_#pU0khHrUA4$dN3Z!Z$tB*I>u zTn4p#!3LwsUM4M7#Sj0MiSg9opPJvArV4D+y@-2AhUVdO_RuIYR%Gl7%i6;?=#uAH z^)WF6d$f7Zwmh*m%09J5^#f6^MJ(FbH!1Lunq$J4CgBJn%Uvab1iJXXLE!n^Z^^(7}Dpy9%( zz12$(#q6b$h!v7HOqgtzaU@*iwc?beqJzu_Fm)o23(&end0^r#NN7Et|5`eo#!KZ; zX+76lTtwlp<%ueh*o|~@LB$CNrGl3nhi;QkNtsP-W|2vDqG+@PJ^(Xh5xL)N$+@$h zD_Ql5Fl3M5oT5*qBh{8SURgE6D(KAw$e-cO!XwLDUc!kHdt!nC*c9KimT>KD4CU7p zuN0ChC`v?Cq9rFhD4NMjqL~#N{vw`)ZZ9Jh+>y<-1@>g^h?OELO+geZ3LRuGo`kZ1Dd;&XoCME0Jm-c|EI4a^t|HdN)4rL{^gT81v9C|M?3_QS2N zV$57Y(D;V?hudyPcNF3(S2qwtbRFqR0adKR{M^~{g3r6E*a!Gf6EjG$u9s6yKeu}) zP8Ze$b19UQle3`tGh)>?RXa4%5oq<wS^-TVlrvV!0MP3fR{^rHrq48DJ-re1lX z>gB(pkN+**4N^;RPO}LGDmwm5%Vtr=iP4FlNHSC&B(>!g;QA7Gc>Ho%(5Z+&B`JgR zlYwe6&KQ*5!R%gZEW-bYl?Tw^c8}C9+r<19j+a$dh`UPib$=N~JQC4)(E1|5960Qi zb1i&3_FBD*$OS`acp8@^r9@?sRRMuUhqMq?T(wfCKRS6orl(C0zb(5{wFykhSM2J8 z>NNNatcRqtfnpB{@=>+2<%J50miV!m7{L0wX3Z|+pD|2>aW-M-{szqhZv2NMtESxC zOPNYEk#L%FP!F4E>b>6D2w(J5DF9w4NgOw?%RcFp`<;)(O9&Rsd)hp`p8dv5OJ(cA z?DHsgzD&~Ij*(q}v0kS9s9CHmrrlbRHVW(NPmO;Qtbm^y z49~6=6@7Lg3GuTwNW$A4I??9`zXK45($!W{6zbP~4|n)s3u1VdCukBfzy8#-nb_@B zsbXm;&0GfdWy^I5i5Q>T!ZN|fSZb)Ih@rG9MWcz2O0rB><1^jNgLw<#`6$1lAYr_3 z*!XI@GJ=j|Nzs!j26M-V{V1bMQh|R;qO&6h)s28*-=x`p@=BUNpTA3kv*(5s= zp^jP!V(fPG0{Hx>#tyXT8UTW^Kfgq zk>i0uJlJ6o!W)I&Oe&GPh zlW&+@w<;|Y=_wF?=-2-NBuBbLn^PVPY~W^42m`+l+Q-0ed4w*SvT3OOiYLn#bbA6@ z3OL+D4Ndb&bK*P@eL=UkkHA&ruAl7={yXZV055b?W6qA}JRfxW+;^XEdAa#+;4->Y zXYbDAG8Xyw_xNHP$!0m2_eAXHH);ElfU$)p$^1m9u7La5jc!Q=?&QbiEaviYsmS8NwiE&aJ&GRCP`%Z)N{5%OrV_J$a3Gl zq1&PueV8b!g=ot?`4tV6^7%h0>JB)uq$5d9lM#GY9g{|rp3zub`EU=ILQ{L8xO*1^ zWW~U?dI`sG(tN23rJn_R!w5cb4!vi1kJolhh@?hvL_tlC);tWxX=*9T+6&2JE)~a7FS?Q5l z)=3u*S7_GeE|eL2e@XEuq0w*9WxSNae-(`IH{K}Gd)L}mu{fua8YFM1*q-U@Q>0OI zz>sj@(g(Xm`gNn*c9_%62`12d-ic!BcuycR)i|K7de6R$0!40bA3XP*vY@xD9!d?H!erHR_ zhK;xcqet4Pk{1v}oCliEt}u>htWqQDc@t2%?-}T0n8l^jkpkBb@N^MERU^CL65+{G zN^)5FbUn7-@^DE2l^W>8(y^0aS?_rvdcNp1jGX6fm9ldq7(y3|)70m~xc$h@ z_~aMs#m`d)8gM_`YmO%;S*m;YWf;$-Lq+LjI?A%#uu_Umfy`E^i;Qzy_hjrGm`L_lnxK5X zc5k^P6cumLip<8D$X8^Y843@O4y&u*3&xx~!j{DHc^piYG@6QNY_x^XCL9Y?PVQusjvikl{9jxIY#! zRNu&P%^G>Fhncqkqf%;AWR!`_aTy(QYM@yYDp`d2k{o3!>ej`D=E7#KMXK8*S%*yP z_%Y3eZqSWfw3szQIgTA{jB_C;I(*+w@Zh2cY`PxOsMIR7h*jdnzYiHrI>e(Ce0jGs zpkFT4x9vnx2g)97MaE}e<4#}^EaQaI6lTyqvJxd+!aSE|re{Y+8T5NnO=QfbKmfFhS=~%MIuJ zs3A9VG7ix(fzq%hFf7^aqF7H{uYpX)$n?-DY;rD4jZI&8WKw5^FRSD-QHye^b+weJ^`8Q~EMl_cX=mYKB% zxC*E$;>Yg?0O?AoOKh;1nx`F$cz8k_pe@j55mMWI53LmXlPt{g0HXG2Xl$I1-`VVX z-Oxe!+^ z07SCdKGaq!CC|Z#YUG{ZSGIBah%=k{vANj;lSyrO_rNb+hi`5%cW?ez6Zg#=OIz_H zLb~$g3Q#*KrkQA%=edl^#Tm|YI{W5xC9&DGuFDu#G|@wy6eoSps6(1yzT6QxbKaK8 z&uVo8z#Y^v;Z}SziZFIu)bDGuxo3R~Pz%JSL3$E~1t78UXTBe|eB{r=Y(sH|! zT&Pcand6)Su`Muq0Jot=Ix1VRIZ^zVr4kl>#VQ(s;#XjUb3Iy;XnVUeZMQE9HMy;- z6?AoH7-sOQ*2G=&Ji`&~IjV+e)_`cdG4G_Ik@rFE9u`@4fMM+^kmoo) zy_jtfYEl7_mUu5(5e1Yy_38*wE)W~3$WrSgDJkob_|gEdeE=S9P;u0G>ciF+_enMHPjqG=K zfZgHqIZG>66eDqME)5)~thxRu%Oq4j$}=9^4IH%Rgbs5uciV(p7Vs;Zp{C|havpwc z_q?5xTT(=bBU3&&zgFs$am9^e1ID{Q1k1pe zcElnL)xCcIol97ZDp#Yl8FeAo3pFt{RcG2i`OOKx{51Mc0jy{X$De@(%yT7cU24nH z4aN2_4R%AyLxYN#y;dZJ1J!s}^M);V5u^81ES7)4J^z#aJ0U@rBmGtpNI*%;1Z%EjV{V zl#3fQ<){%9)WfS&L3y^+G1**Z$f~erRCVHe_<5txG-N}`&^4x9@xW98Y+KWG6QU|R z8S&5xe6@5)AIk)GBsvhlTsc0FA|h1<)3Khh?VwQ98bX)r{gP_VmU3es#5AE4SUh-| zAgf0y$1qRR5U0v+t(=)!=qx*Jp+u$+AM1uDP!<_N*4Oro(t`bFVAg6E*Jq-~RPPt9 zpj-fwmXAx7Q}%5935-#tV~>JA@l!m2n)L0X+U1m$2p|gm=KmJI129r-`ozn=3$-}Rvv{+EM?bZ!V&0JCFxQI$mq;jeYC_O+0~w-KYj#q zetkf|@B&o#q337CyNUS9uEl0?n1X4O(FVmw!bUZTRO;PZTbce=3{S zUp(oCC&qH*$`=>Vm2aaT<1&fq6xNS0GIkh(k}iMD?siJZOH}?Xw2G{9U&RVDh6)eE z&6$2NcCjFM)P#r)K?wy8sj);3XdsHk>vq!3a`hNbU4D;a1IWIbQ3l3D>IL1x*^^1K zo0o-_y0}Veqvx=%bMp9cWa8|jh4#Y#KIW$&y@9uw{W5vsuT7O49X!G(fk<a19p`+?y{`>i#p6>O)=3=<>{FwxF z|M`)WLDI$Bfakk)5XbVQjLiRD-T72!9F&FUv=hSe4%^(h@Bfy+r&Ukpd)YX*7m@$T zd&zgy(`F{2_y|mVy`9MDNyQ-&2?KlM`kYEJ@?hqP-(_qI7x6lR_1b{UV8-zmeqBAf zZU1cEtIgaq9?00d?l@y1b7)I$*t|CtzRuIfYee1-9TtgL61r^RHJM%Ws(D`O+1Dk( z=)9`(ysD?T@Da%nX^%|UaG_Ps{9vEp8|V#kEriOc-5xF(+B81K; zjUH)+e_ZtmM{z9y_t>Xi)|m(&Xn+GTmmT|~&yxmES&D?$Kl-&rJn(SdYzX{?CMEJ; zI^O=4p8{>b2a+qNdjdTJK8_rII9|M#r97RA@JHVxGTZ%lf8>3SUE@8toA=sROP216 z`=09w|9O2LeDv{No~yI&`eKK~xh^-u&Ry&y9EfE1GmrffUeHlO>zK$9}RnfY1mndoe1LG=+ zEoimhdJ1_$l?;klSrK}6*StS82EH|wwvqjtgp)?W>F-&y5XFgNRJ9pt2zr^Cv?7sN zd+`}WoecEJ%zy2#y&miD4Q_M5)hM6hNKTX=kC3|><0E%>cE}=cHaF`kjo7tJy6Fub zll;IEYHij1L0qU!GAmX5V(d!{fW20=oZQ_Mh`0{S5k8jrFUKw)fE#?NvzR$MM@bk4QfQA#&` z^v;SdrV-q3%w@y@7{8hk>F^sb)&`92?=i3=4EINk+412rH;ye1k)D+A*+ec9BqdS4 zX!@_e%PPASp!br=3&_h`(sDb|)x6K2YUt*3))7QQSIK`BC=1GFs0t69#dd;UN5a+X(uh}LHxz*@J<1(SiHr2@-9g%WNDz?Fia<)v&{><Y&)%Ar=IVSePuedLdZSp`H^`2{>?AhLWckeT~B>ss({UAFezI;gU#=o3Ru%dC@`^ z9SkrA(#9PikG8Y`k72*~2q48ThoRzR2bdZ5{Xnij-$5tk{=7ZuYD%QdQnw(AUc`h5 z@kCCbklZ@P{_+G0JthF!;fPcauy`j`ZO_aQAWi*J@$jINcqL`p3L*f(-uaK6wDdu zkVe$ayEdXmhEM7*MeXJt@d51J_I3?5vGnZS8sZ00J=Lt{7QmwF=Dz>uVO%Sn+?t^I zJg5}BXDW3m$c6O{@VNM*b~4@2Feuv;pWn=g3}YETQ}^h&0|SnZfq2Y4PXf8uC?tCU zB)%sQth9THd+|rz^AH1)FTU1C1)34Jk+4-1uy;GBqtK|_H|6tNV_70PgL29~2odWp zbop<~0#Bz?YfmlKM4gvl{k-E+B%g4XpM$o7`&2#T?^w+)7g;#2^C9_TG@EtNipI}^ zwElA>i{EdtuHCI^TLB|GnIXg@Tb<{0goNJ@V|(5S zNuCb7o;zfka}XA@Nq)L=fA4-FHF_GezB&%^JS)HXcX@rCPu#mk?4;wld--FL;en>( zIj8e*66gAP@8{rUEe=x68~^836E+L*cHBF%I}8|bd*n4dsB`LlI+_9}NWk2a$>Vs)wPJZV6ocJBt62RS?X;4*)YYt^O zv!O}5MYWpUE)sLwk~;R&m*O`1vKmR38VCSU0ZRI+B*Kf8LR>c_b74 z=4?t=WH%9;A;eHQcL21*XVEw=3;vzX&?E`A0NUBv!6vc~S!l2mKCHAmQjj%7{b{Bw zNI_H}m4u;H7CM_d7^)SqCg2mroF%3?tC7X07b- zU7}*z1aG75xrQ~(A}AL25?lU3b_N~R%e8-=+{2Qa{V6^1w9bcrf}H>8C) zLOSWN9Syzu+p)u)sI&ZO9uCYUWnwaI*26sFVMrk@LO3_Y1hfmA$vddXP;Ph5}bl<1cVDpvR!I)TWkPG4c8mE{6Q6j zgf;8o1P;`z;7~nPw)!Qm^^0E^GI)$_sjIFfVfWIiGoMO8sv!&Z)5hrcEFLisJW0Ti z27`geM_w~yq)a`le2h*qB5+uZ3x5>iGR1UilkzBTaZ7-a2!|qFUtx%Q)9l6qU~LhE z#s~O@QCXj*u6O#o=Ef#q7Hm$MHWlErLRT&e7!5;0BZ%-Jiqe%$pD7HB93;{yKD$v$ z0u;tk+ha$mEG=}MKUF~eg0BFQS`mS=SoV7QU8N%z7BRk9`_#Hzb2Xdu@&>l!wM)Wy z+F$p|>ylRLzA9UYjCh#hz}Y&e#HLcr#SZna;wQ^BcQ`pqS+ylEVX`G&o|3homihYZ zAp<&mJvBnhoY;S#BSoUIuA`~F*zb8GTSA>V>=pVfdypBp@hdgdfveS1J6yT3bkd*GwCBHdPg5(v*s?@g4VemGe!h5ky-Ph1^n@`dnUjAC63xgl!@HCXR?)OH)XX*l+ z7=7h2?!lqisNEJK@PS&TEqJ@;@j7}$KK$(5nH4PPT0b%G_Mln(^Y*S*)-d@rQXaYvc&)DkZY6Dvm|`_>e*T-SS(u2IOOMs`Df-tUav zZWS9DGcm(N#8$B8*HOx-HkbSo1IHk$q}( z+|@IYjp`6E&=YGa4W6{)^d=?-B>{@iz3BNMQRCJj8wNL3^-=>zB@wV7jg+6XnTdoz z!hPs>?TmzM?M^45^T$%Ys5==Ufl&dAl`A8B8r(t%2iVeMp7!@l& zVl0q5EMu%LUXbl;bnzUDdo{Z!Ia(YH|lh@!@R0toLKlsko?Zpt8#bcy*A4x9KC?e+B^KCyDj)kk36} zH&}t(#R}Uxl{P$8`JzNHPpfE}q7@sS@0(2XB)>Z@u9B{mxnacGYS5}>i8$F1eB5J9 z^QQYTzy*`p5APgf#0*KL%rr{m^$Qj8Qku=LY~LWw!FZAZu=5H^NHe(e9L3-unVK=Z z(k5MI1q%?g+1uqYBwOpg(*;=>W1D|vl_}6T{;)(3tf&rAza%mNo50cq>^p9RtuRPZ zG+0Lnz{mewmqdzc4mJlnYS1Im2*H5l)Of+1$&AKYU&sJE(wY~PV+x|A53$KD;Zg;3 zB2J`X<#11%#F}li+pgwynyPdA;zCeREmFmGcczim%i13O*en7mjiP4|rb$GWp8-=W z(lN{o23!b3hJ8anBsJiUO-yI{!@xZ}5Sx4Qj!!MY0f8p+en1Ax#X>DSZr-XNUKQRy z#0Ovs9EPgF2ArI%Cy7z7mUYYu$wIjS^m3D-7kKr@{5CE;ya`YPS;~im)wE__a2FM+W7CBA$y&+waD} zN#xoh{;h9tvheRw2MJK*68N^;wBFg2VC>Gw;sfFcgCq4`bu>VH^RAh04Qo54?OA5q_T&t_AM;F28_8_OI-xju4j~bl(d~uamdhqkx~sEv>(d z#*2*J@HbyTzDdl}*G1F7tjZhM+k^!Dm`?7lqpNmA?{h@v{YsIRD&Ui=*V3u-0i5gf zN#(zEMF-yPO+s$H>c9B$!l1)WeV74r8dR@MeviWeVQx9QI_z>a8@)8FX8aifq)`hohH3Rg0*Evwyk&4QSCv)^d^0g#crkMY zL=1Ki7W}r8PVSUICkm?2yIB6mI%DOT9%?doEMATp;6_l!J}f=k$TqXOdDmURwH18p z;v>;})1O?Lb<8xCf}C~kx2cmzcyp!<@UI!fruYQzYH+|tA8mwIw`!+3JVAB|(md5+ zdMa+3DEpBiLVK4)%2=6;+ zI>|k~&b|3ZP|&uxSx~&Fb+MX=9lId1Sb-%yf+5R?KTA|`K|CJh?`=ICVH$90AkxVg z6YcM~U&lOPeBXMjX8=?)3j)oKIeY&qzk^1;>6Xkt-gnw}VM0()3RA`jn{%>f44_xt z(%Dk~;o^_^ZAx0ghY`hmmKIbNECY*jz*yt5;Hv-o?-_HRqTfotwtsM(lSLX3EJ9TM)Ofxb%`q^XhMh}@maH3^Hb-#oVW*F9t_`*%FyfxUq(Er)X-_aZ znb*2VlTiGQ=7iW<4_tYO&Pdd3bTeu5F7Vf<12U*VX@OP#h-!O9=H~2ESGHLM@IiKs&eII+=2L7iWjc#6hO%$8iL|L+l z@a$!0X$8O!PL?U>^7$H%8^}#`Kst5xw}A!Zb>aK8nDG(k`uSih=;i)m>N&2t?(@d*oWQa52Uw~Mq-^;-jo^KJ zkUaxNw0yoVWxnhI_w9|JNH2Zwus4B+ORYjsHLnZ4UPqI|x6KK_)bDTOt~$U`-M4W~ zutJc|M9_CSLMN$q4uzHE32RImQ*QI2Ttwbc@yX#$0?W?W);!+w$cAW;pcvaU#@tr~DDTWYic2HsT)Pydb&V&XPagroAyRUGs*I^S%%? zComlw8khUJgV<)f3uScOxdmcCPkeZv4oLeWkv}q@FuVRTnQ+~b5C8Vipu87k1!?@g z9A>~*h>Tpbe}>3icd@VTeTVzQ{q0H~$91hMey_EOi^s?Zh@AiQM=0uo3@4?yLCLH59;6CJ292Mzz_jBdvi~Suzx4b|dc8-zE zGv*oCv*t`(Ao2+n!G7M0a4SL0(QDS>Fv%0EvhSZ)uf@}zk)r^kEpwl78D%Uxm}V;# zD#QK(7Z4up*o^ODR7?S^)paf|L~twpLOrq~G#4E1BFmk8U2^zu6udW|B2gHCIm zB_w-!OURMn!Y2GQ#bBo*%LoOx5x1b!=!%N6Q}l8Q;27n(fJcl$8Xzx?6D}`^{fw(( zgIt!JIS>WE^gu^7f=u&ForCmD3@p_v4qYN9mYbft`085)Q{HhtB^V!J|bGmwN^epSo7+YI$T}Ze=8U3 zJnjR|dOV0u9|Z!rDwo)2^ZNLQ4;2Z%whaufKv&n%4L2lw+MCXTkyTv1GMGkfwPd`F zK-EtHN6B1tayELJXmCdk$|Wp7__IxsDd#uGsgh03HCPPZ{LBoqm2P>H%w)xK+oGJ( zG^NvRI4B&srNxd$VcKGJH(b9xh3-0IEXLU`EH$!**fQ7LF?cl$G+uIU7y}A2R2=YE zpxMNX0e7z&M0u~Cyk?sD5K3Tjw$>u`{4<=G7^lMl6EJHMK*xofpkcv)e0vyT>&F)3@i1 zj=P3^l+OjHAXUxX#46|e8reg!qp}#^jKHqu;@cZTeL+G@sp8p$8z;%NdWy|<->iJT z*~Ae|sZ2W+ueReYk)S#_Oq7|q=sw1cZmX%djmkstQ@cAbLFvK8qFR_)baDZZ-!Ctl ze$VbuahJ%j#gG3?X-rVww&-UCF7Z>*pcc+v-qYzeHI+VqStk${iaew9x~(kHq%&RU{_nC&hh+H zrsgC#u)N_6GKIb>`lf1|>N)(0)}6S zK~?a@bTpMx;K@|*Vn*3{uqnQ@rF;Cqp15B(K~IKk=QxFAY$v}fh+rMNrsK^+$?Ij$ zyB8EZ3hTNGDKgMw)RPDNv7gX(94+BB6hSf(lm#X<`7hmM9Ps^;K{hNO_&_+d)fqki zaidB&L&*3yN%?4N>cbFb&FQc(!7tF$(1ZBXW%TmuLY+FpVc1d0`#dX`6}Nt;g5`SA z(?1AN_(tmI>#?<~!*x#QQ!&kr$oGy^o~~W=P}^B-H1C0rDt&HXJc2{l8Ah&W@y@SW zKjhMCv>C9Xm5}_Y)BIc7-4E^SQHGlRKhr*BEc{G+M%n>E-+}fREt-Mx4&D0@-GZ*P z)4sdk6D1&P=q_$2dJc_^yhy@vki5=LwCi>rl4Ub|-Ec*QOn989dfrouKA#@Fm!a0{ z`cI0di*Yvke$$8m!~dFH-*)fxUH&+SB%Z1yu;6gm>{AR$rXaqunDW`-yiZ`+`|Li2 z5cVD5@Lv6Z7|XwH`>uTR#8YLIyAjP{@U(K;`dAJe=#o)tl|Lx;Xb7$IJk{d9XOH)} zCb>C^K&biLJ@T5w+dAwn6$z&J%Q9WGrCYXdHl{J2NFf;yL|qY-fDTHEHn3f7mnxb2 z)q+GNv{dSWg`5NR0Y7j&e3p5Pg6aYhNFW5;HJjPQbp09K_u`bG4aYIL{ z+WuBvxu=Z+3g_f2%#|!9Z*kE}6kh+~c9;N*duoR(M-ocYMijr&(cf`Ev2KA7ey`Fh z>kMPZI}0B&i!});MNa2W_d3JH%>xRfkx{h)d`yI;Lluy_eqGb**cSDcu+{1G6{1eI zyUDOdqZY(UMoAN}Ewtj!XP00zfkEMnYQ(^EOfKvLF*lq%TWXwHkLOSCm)k8l)|wrM z_~qf8tNuX4V@}s29U-tIIKaW#rJ`f@sVsWvT3>fS!Vynq;zDP6(Bj$TB#UdN#)Vvo zclC`~Ie1jg%r&%g#3U0_c`Pu+Dn8e7Mg{S5YoOj*-cppT(2{ENpJe&$5Tw7%P0F$X zBOMokI%yLYW{F-R#slZ(dJ&XSTy)sSj|j;MA+h5j5&!_^7x6p1AKje2QOPtzE8Amp zNIxdVvWUHdRL+#@US+<8$)`KU-k^K94GCV_hrix}oFOZ-td5zr49hz`B`ddrSZxj8 zo@mxrq2^ctH(t*ljK{!}0ms;nNnM?&Uho`9B9(;E6r3K8U)HOeF_uxS6sV=HMVMv% zG>#^_B5SfcuzWl+>{W{CW(kEwA&m6nS3YNe=a@}g%yDsF#)zE&8*SpCFdq~g7W}5F zmW0JGS_KAMvuNyKA3ul<{RRfPLQ3oFTqFt?7bbN~7IOb3`H7xlO+0e+xM6r1Tlv_p zz2Z$Qqm@N{7&c_+*D*|IuK!{I4MZfa{|y-^pq;@@nWtYJW$JP{0eD*dYaW(MNHsCI zSf>R^TA*j)xs}S>B&#&HKnrx_9g};Bakr6_5vMtyc>5A>q?-kZ zJQveG$5Y%EMH2EE_~t9r43&sFt!DuBPNlUM(aa&7nq;$AeVdA@@M8L<@*9Wzqqd0Q z75y?iT}Sjt5kYF@2!CKhlM6EHwg~tVNYPcY4ziU>8%$WPmREQGqSnH6wAM|H{jz}u z8Q8w^YcO9tYJA*{XkQOq3dV9w=_Odq2VZI%c+S#zf3|HMS+6lUx5jO_Y#o3oMYONY4v%6g*~zX zq582auJoBel9K=AV)T*tJZAuO%i*$LtJ3WtnfBf^f12PCnT+FcqGWAL^%Z4n3%^gP z3wUqvz9=@{;o54?%GdtkpznM|SG(H@E0kARy9LnT`Eh73GUYf-)Gs!E9`a!|^)WIz z@^|?5?Ul)ScM$d%~RfI za~0Wri<7xYer53(`9@H?3u$bBUA08QZDliLs^~uQTkw{w(pKK)a|n{}-e~LSb&2n1 zbC2oTf%bLCEAjAn363#vr+J*^0Hc5JsY8adx0W{ZpN2!ezDdmt%Snr#LZl(dAS~qg z2Z}dtkFQP;M7-eh2chQ$*4q!?{SmGn!qeb?-i7F)f<%59A{@v$AwIApNjjlFTB$qE z#WB_qu4YwXV2V6(#HLkI2j7aG+5Y1kjc5O0(tCp0Q*QdbUC%TcIeEc|{5* z9iF|^7+Qm!Mj=%)a}JsE1bO%ZoC5|-Rvx(z1QAE$NV&P0os?-*B*kh3_lpFyVgoRxzdI2MUK|GTX+QIZr#WPJ+}MXlx?7UiuiS$93sx>Rsh>w3 z{_jH;ZXJfHscr&>c1L&`R3%%=e++&mfHSYO0%0{=kkdzjJGvj}ZjCzIhij7&RTmTW z?zF$tsOwve_z=X-Ijq7B%|Nr3nB#%@9mlt*_)Od)>63|O1I&|=E1mHNxH^RMXc_R) zsg%>4QxPCfX@%loQPJ%T=g+()A^mn;%EU4ktaf_aSL7nJBqTRI4WyGaIT+D0C^s3{ zO=YtKPNha5fn#UMUDNDv3LCqs1|hr9u*EFvL~*Z;A_K$mp<|~l7nqb{EOIsBCbUlz zG$$-kqX_zPvp4d03Jwm)5^Y6}E<3Ek6mvI-#?WLFC<(;kyna0%?iYk_@{Yufl(tlQ zOQ{nsrMcD6=ww_{rE&jce{lORyNrryt1d|d2W29n%!HSH!+afcXJM)k)3JleU<5%^ zkyb2bf#uHKv)QbkW2@1#=OtP5wT)cI+0?npWoQxzrDr&UpfP|)jftM_hbkTAEjg6x zy_k7W6DyfUo2J%0zoH3E74%q&RvFqu?TmiCWRSw+43)407=j%}&~XTK5zgjo=naw%$C|?|f7*b$KHp8msA}Ve_U`{%qj6 zSvWH87kMAl=iR%3y*|W9uSq3nyMACkeH>T0hfJ1bo%lSd! zyYrUFcpqqb>CYZ<{^xu_CykoSB103-T1RS;pXrM{pVY(JFVc7-=WM^8I8+AU&KX=%O-43h|k=m>uLa^ zd_5w6gR294;#&%YFd!Biwb^-RkV9~nFJexQR~*=E)bA_IHf{_25FiwehWyL<$X9lF zc4{3tTqO?HpTq6)8WiEe(sWt}5=ffusgV&{%@yyJk+KT#R>9^ty$++a6EkRb5<)Le zrZuFPWR`^g-6s=6p~58LG1r$E75gL4&0 zA(Ws}VoSl|ntdOkPf(|9f~8JcSeHm>IOyEds)utxHdS&VGt-D#>sL-kjj;SwZfnj! z!rJPcz%}g}qZqfQ#&fxZ@)MhYzFa37CyHV}Gh2-Ypi9Tji!9pj1&jP*VYKJEnp2qP z62Q?VVZ=V_e#6T=68Hf8e^lr-{voQL4=rTwM3qHyGWui>%SAK7XEs%3)n|XUvS8a zsl{9enjyZ4ZE)pfHI7h!aB(FkkD~UxGr3}eG0@FBacYR9+&0^GmmyNq!=4QdrCvKN3T4v^5yZAp5osX;KIMe!P)L0KW1kRZcs~(sC^O|6w;%$r4IL0WnWRuA!y4=Dz@yG=7dLgNq zhNBBXIBDn~v}Wn1FZMgBXJl|pUC=Qo`5Z1?3>w(Xxhf?INv$0zYIT}7G*+VM_C&gX z_ZR_i(>`~VWP)7ikErJ9?{AJMPGq_tV)J7S0khZePN<03ZXvrr`CFL44i>~O;k9%0 zdq*mYm=AgSdbgWI`s!6O$zL6W5bJr?fv24KH~ot`PJiIX{97bZf{#+&W z3C;^0SBE&H4l}dc_R}cUYWKdw{J6F8GcC<6>v4 z^XwM-5E$XD#79bJKj?(^+1YSUOpC$S$j0=`=Ebh)9^cy!cSqXYkr+=>PIViAXylG8 zMajy5=kzO0o&S>Y<%1$q9Pko-|K0b*Zd6Ta9m?2w@u%spt!O_{`owA9kl1F!v|p}q zwNRv$@UQ+lJq9)m!KmTdwz&9!fcIUScY_w`u3!1HhSwnIY0$0d`_)&a%R5;%osXuI z7}NJukh%a|z}yyBBtIaPU0g}h1XNQepBLa@SnY(qP7Y=Z2b|)Io`>oS+$74zC{CHl4Po)1 z*Zi=};J-nPYu#UY8pe3wUxY+W2jo{l{rNF+?)DDiPiuGw@uPn_r-%xnFMZH`pBc=4ZaB!1~$s*nOq!*-jj3O~I0d#2J0up1cn zV5XvmZ=_T{J8kJ&YBqA|iB%!@?^W)+}2m7M&6XszNV#3)~xn zrSuTPFz{8Wt0Zhq;!3&uNAe?)-*WS`Iux^>PqmFF%s}a}v@xx+GAV4n?w=^JnQ5@5 zMWn08eLV@W)iiC8J(GrE04hx&Wt(KUvq|?+TTv6`w9vPvkT!rEc0tdli=3OAdt&P4 z^|;Ho+CtxB;g-Z~s%;@4$F=fsedV-tZ3x3|I1TJ9nLs*0&4(F`7o(JbV=57t5F!rC zfW&DcifZ5qbA2-01#&0%t>OJh z4NSD%tV8}BX#!vY_m5q};MuOVG8<^qzOUaU$;NHM<>h5pcfDe7iO+CuvXI{~^~b&S zHQ#D&+g0-HfvkNU#`yMo1W0ya@8hP#Fs;^FZ|)!w{WDQtnZ2%4GKP6f(1&blwjpU& zq#n~4TIEZQPn%UKW5|{AUKLO#FuVbr1i`<~viZZ2XFz9@->(0eU3Akm|3x?-xQxy*mQo^pE;7raas*z+pC+u<_sd>;K6#&=!BpZ< z!Q;_}0Lb42F6BIgW8>&5<=l6?wme+nC16=qNXFqQx8>ltuR#6Mla!*m=7b0nF}22< z#o-nG>hN}shrbI{`@cqM&;8rKloA-~O zo+_hcD3?b#jGS&ZW48RhSt_fu2O9-fmNR)l04M!~3;6ayq-Ex{QKU6nM{x)v{<+@d zQISPh5+Mt>E}brAX5#U=pU`&?7z3i>(P~}t?qTiE_VLSHnfi~Dki7egQ-7jH%e~`1 z1`ty(E9ENARk=y@0KGhwA z$Znzi-BtV((aUmK0EyTQik90&*V9bhqwUj_*p1kQA#fJ*df)RJP3nJnd!{JXu3f6x zJ@IZl0B`9 zoe{mve0+WOTLdx$e4cThiZ<@*F2lvnk-EofMq-~IG_=D6?q6qP?dAHAXF z2kE(c_JbHdBtNN$T_isNxxlfHfx_d3@z(SU6ykT}_yF?ry~Fg#=$@*3CEFOx1`g@( z(EtbYd+^4D3x4z`lixztzn{<2C=CHgLH?@3&I7+jH*;h&pzj%fHlY+^_+=(@*Js zP=BEHHg;nOdVi9?y#uA*^}hc}@r96`Yrj{}|95657t`dBEggmOj0g!WC|3YfA%kgI z&dkpWKF`Ygk{*HBC1YCAF46W!@~TpQ{uX79hjTE9)0ksPni=uCY1{Id&bN}jfMHa> zPXEE1z_`wB$vUuNz0zkILs-}5@bgSb>tF!Snxf>iOWw5rFT8(;rNEptOo0`isU%II zN-!rIe!(VE-NHzwnrKmThS}`RP;eHOi^w0MQ+sNt;1I=IQ)?x~6v;?eB(0vw2BR(@ zHa1cpHlu3>TWVgMBTq~Dh7}5;XJ@VJ-K#b*TA3wSlQKuR57xM|d9!QP1_q%q*Z^$J zDdWAGj51@Xkz5^RqE&VpU`OT3TG%K~nJMNIG*C??azp`RBzyLdS|$5}G?Pp2c7xYOb)LKFdEI+dxhgm#h1nKei` z@*tySsDa1v&zc>l_rLcqhD5!BF9EMvOKulXygG+tYSGt5?A?j>yhjl+*mpfj*?-C+ zv{9vtgHnQNF0I#n-}H?9eBogz8sbhopt#Kx!5%(-m)5CEi5%V zs?tPfZYSsVt-fasb^N$5r!&`iY;dI+a*VD4&0D#iT0IW+K6uYmxkqP{k1R`Y zLfM@4ljf=6@MpSY1-kV1QpZx1A+80HFE)EYOH+5s*>Hhb9H9-#-kepo8#fD^4>`SK zKVp=eH%;5WVYAqa;Y;)MZ~$KPR9;|9)!X3wt#SnYuc7;SUPdFXlHJ<*59euMpqw8?PJAL zO_^b{FSU`%a1rs9FEmQPU0cU8nYk7j--`-ZdkgfGj`7GvO|i_Q)dsqdFwS8RIfc&t ztXJJJi(P-ZAAG$l6K!S3d}VsQxqYtlyUl-o|CIF|{e+UdF*Ht+hNWG<*pA?3EB=Mz z^*DZG598$@#-)GVM~{MK7U`0m zvJ=VCk@0;+&*=2y>I$G_lM_DRw8$Aiqxv)%D+I0l?zthLxpjP%l7cNeEX(qMXCx@7 zTfd2Dk2K05&DSsWQSiYb2m{7_?EWl}GB44smnWFdX~^<2vU0SX$BY!oYn2-I&~hk+ zIS}8X;5aC>1zi=t0?F?np)|V*dRq0xX4HyJRXFMWxCN_*un-_-Ml6dT9k-dikDoZp zMrd!!)YfjU(b~$tcYF+U^n*GsZb8{~ZmUMt>AEWtWadE1FC^065w`;-!w(phz+ZtZ zeZJ3>Gi4%45?Lz=Amr}X2`Z~1_N-L+D4d%QquHG0UBMG(yL1pLP}S}$qCk&cR@>GS zKo}igRc$ ztp(jvM{`5H95P{y-QitSz9w}X19^|x)S|wxKZO61E&}5rOr{a4s+^+EQ2T&&lKlRT zRW|hf9^99BxL7G{fOpQ?*=AwbBovUSA`$4eCNt``O_ZgAy67 zE2sX5zM-3T11X36t&I5UL0rA++J4uvJ!wL+x6RO0*L_83K;kFh#?{Smc=RD8Q79)} z=;=Es6=l{;t?JQrR4SWr3?6b1 zql>+5GW$Vm{3lpS*^E*pw4SCE0>{`ySlfF9c#n$cQ_9+2$uB2y{^sXc3X4S@Fp?YB zmi;!;#`V|m6w!KgbXMdvr*r6FiLnfVA;1i6sGk>EN=(lMMKQ;f=)0ByHNh!6j5s)> zyxR7SL%$|Ki)yLT|IQ9aumlaymmjLm=CF1K`p-p;$$R7)5KWbKM)+f{qF)kSpkz)! zK?I|rUW0-xzi>InKLG-tDC^RH(el6HAV}+2!PrmZR_K;8^3+<$+k$TbgFU^%85*kU zV>W3^E2v_6fh+AOIYZk<85A$SVItnz*9v3Q0@{o;oS)k(mukMKf!6Qc zUi*fOx`W^PG2sD9bZ6U0g`U>|Va=d_F6_t~M z-lUh#Yn4jSXEZubjZ~xs`75rxuY^3P&P+eK;wG&c zr5P*x<3)g&Ax*uqTI<6)^XFB7y5*|moa2O;_PVil&kQF|E0{PN$K67Om=UzOdH85i zVdcw8G#&{_$4sr6+QJ`NH!IDW{Yw&iz{kz^b6KWlvW6x^0&$Ix)5on7vM+q7cEDin zqSzceK1$u70gID7-@bnP(y_cQ)8WL&XF8w@JCf#J6vYn|M#4Z6hm^v)LEo9=vH8*SzYk6$N#*N}#p`*~R1B)0y@!$`R#^-4|WOA)783XF7AO+<> zr!gP@5VfqTF3k^Lohc;7A}4t^d43wzRgDHQnUM-?ugt@R@ADBkUQR>2%=D`0U zO+!$~%V0?YW1dI&@{Sf{V!2vI5wX}$SAHgCf|r!nU$j5t{}ti^-}8Px4=#|n1SWpS zrM{d6Sa8yn{cJf|+ckw|xH+{ZgvSxEy|o@F<^GGAeF;7FTssPjq_OgsI<#z0SuNx$ z*dMgi6c@^JU>;=iw|#V9U5<0B(`@#3Acb%^kp@S%Z0vX>QaE=zgJ19gQTAv!+t@CQ zdumF>*(ZI|*z6}-y#dd@!qPqq9*285e~z~SfOPd7_2Zh8k&caxkDu)fHdB*VB%hkG z8_CaX3`Zc(Su>9Peah4|y5b4`7-3=Gk%Z|&l~yOBgkLo>OOMPO)z7!v7_?Mg+R`+NY~`Ast`N5)rsqF? zfOfBKpSScc6Kg6JlDU0YG!g6vRyk`ehi>?4{8S@}D&oLhCzjvA-Nv)53prwEo!%d( z=qv1s+PLu~I8IrqZ?$mzN6IG{EG>v9PrK`BzLcRzX|ebf7`v4-!vTK+>Aw=nkmu#K zG^ul9)8S<2WHzXUp*n9D_l*B$XF98$0YcFgK1VxN(^2nB5N+=%#<*nrc!gmGUFE%# z1#{>ygpR2*yHCe?n`Y5zrtF!HdZT}H#_b}?#Qm)53U{K*k|wwEh>bI-q9mZ6L|GHk zVQ9^{r!)pm8P#39i5+*90i7HD>-;Vq-tNN*iW0eL7@BaR;>UWZHET24k)gE52Ixq* z&O;&X^DAB7D%xXHL7$Aj=`In)O%iBbmVh65qdHa4w<8oO%=XGCUF-YIaOX` z^AT+OVXYK@$+?8GCtS2&&JZn3r%!Zn=4uQjshRSou;|W6u$~hHf+-^f0#m~8W@PWa zy!Ri$YfG^Hv#21YQCpFt>}+gu5_Rt%Zj2d9%X!`f}O4o(yixxf_*< zFWHh^hC1Q`X2190(wh=TSiHw(=VZu#LA1y&fDDoSDM~qrNkVV|<;w0VH2B-Tvv?kD zOSmBKsIP}(_G~an>Kjk%ooi-M)RTXF^5*s(D8wa=7|yD)MkE{mna^^758zfw$jX)7bn z1kbXS({C-CR9~4wq(rOjKW&L3iEv=SIA?0{98X!UFx%N<+Pv7-sCl66rM2TD;f=e|n&=QR4N|{PVa<~6k z&;Ho64ep|NsJ&`Pj+sq;_<%;3Ff?b0vn@-~6~g72PVJdS-IvN*Xpb@^DEm=Rfs=23 zgvo8f=d^@yp0LHP(mCs|U07vo`#*6iPK=n|z%2nL6a$X&c%tbBch7ZeY<$g1nlO#Nwk|Hnuz`=x<1i@5 z)&Qcz;>#83pqJ$3ToF08pQ1l6w_5W!=W%jV`?l*e7<-Hd1nx8Tno^cMwG_Z#?b6?a zn>tdx6`9?e$7&}SwR=|<6+&uuZa<(Er&QXST?Sb>qJ4(9wc4PX?wN3{w@6)Q+Q6l_KmXDO_AevuCbvV%<}5)X?#^mq-Eq#;r^dn z+i#@j;`a`joc^l)RF|odl73xCl|6V_8F4k24TE%H z9abz=-4UuzEyE)Ls&W=z>8$I`qZW&c^gg_$EN|f?@eEZZqXG;j6a1_nuJylhFPncI z;q8hxrNl@iNl|Uz+D%KPVoF%34MuVrasYpcvfcXV3@1K{pTR&xviY~z-sa=n8AF() zc85N)TZG$>d6!cMR`s>v0nUt{t2cjP7n@bc@?X+iGzWStFkHL2l}Lmp9z>cQI-f31 z3E<~)lnz`KMMUFAg-372e1IavseIA#259ALcN(C+owwCmRh6u1*a8;nQ3JT%UcgO) zb5sfsERi9@a*)0rnAnXQ@wFB1RkHitrxQ^97#_;hJiG8(UU4AeUCE};=Yg;4KlxSX z;H{S_L^rkQ&97rBi1${}8PsS6J3|yHEb1kckgmsalX1ug;PZiZ7+Go;U@NtP#fi1O zu;jtO#ou;_&C36B%)rdq%H~;A%|KK+!w$#!X@^zkW65KVsIV2GOpa@H96{&H5ZURf zD{gemj+~~fvj`i5=r>-Xi=TQm&3eN{zei`u2xG$MrTAt@#^{toj!pVQ^ejdCxZX#T zYm$6VvP45jt$DHe!4vjMNI&$o@~99)$=j4rrV|4W)aeGNYiA*56kx~~We!Bqx+vUj z9(0gL4q1+{_^If4k$=HBgfE3L7la^AnN^%JF2`(HqL~#_D7gP|2=iZYE{o^>W9^&8 zD6Nnxr8d|h{?VuO*r?UZBn{Jh&q}ZYObA=<|8rr+0GV%a+$urKz8+)D$Jip6=~4Zx zuwnM2Z@@i8{;8Q| z|6V*(F-TJp)1Qg=EeW!rLJ-gD^I6EuR_?}O(;!b#*Q~b+7Ui@3DthQf)w;!>a4)_=q*jhR6;a|NKIwRUx z_WGQ;Mo*>h`Vp(rTik3WjY{A7)dlT+dNvGGHbQ}Pkw6X_-UQAD4^s*8`@KX;$G^p{ zrjaWTMsKEtSfQK_PBi$>$iFR|^+6i}QzITS1@t3Pk@c{#9z;K#x7A#m@@wo2Gr&Rv zDP^FeQ*OqOeE@+pW?gXu^LsysMilt-Ax#8w^jk)~CYUY^@W0Wvn(w!$TBmjIwJI5t zzfemvMR4rNjo~m#=X`*W5${HhWAmgtLX4vD9=Z)YTA+V3OzaKHk&WD#WmU(f7$p4R z!Ki&n!2&dH83+wwW5hsA?a`!2qvp(*XS&V+SX!8p3UGT4{)*apFYfho%f-7U(A5c- z%M(A+o#4RV()XG&eb~t&hPZ+zMu`o__+`7J^LpV;c%P`wRftioB|=XxOZu@+m(7Q7 zX9SmePLcrj3+{(vVXgtR=Z4`ADqoPee_V=m-F!R0h8~$#~7&KI#4bsH*JA)n2h;7x0_uq}FTfT_FVgYgzl!qCj#$vyG z^3YbU#*=(8;8b5BI9ZZ)SZ+Pf&|S-SW)SSJ_zozXr2p7tj(Dq5%y9kzZ4Rv^-yH3SuM%S1CdTt(pX3C% zZT8h|Hv(f)T$#^V_$RM&e|)n{QD$XVRDdp!UZZrPpmmN#;06l{qS07aHwc5?ryow8 z=K$f4dVDvPwie{$#dhyv=7-bii9)FoHK{mdI&Zz8{9<*b{9jV-_kx9n4NGp7(FKKzGOZi5Vb!O^EgGbxxBCA4vuJV$rfFpO?8XEL=HW&8ANDbscrd59 z<}qhYcQ4H8%57MG7`MZtc-FOl(62;o-3My*AaWM316*5;{R*{Vg6m&PFz2Pxo>s|( zT3TF#$0gXNp(D(CIKvq-rg?j<-I4_MQ1 zpg28|r-#M6(sz5tQ*BRhl`woqz#kp=>7ypA!niMX7;+!U?Ly?Ig+vR6@>6RyBU44) zOHhTKP@_@~vSYvvYrsCY_Ox$MCS&IRZVsZ967nVQr#@F!kPqM5=U;crn*Q z*;mOgpt6 z!fn!r$+BBum;gCY@9FL5s@FaMRN$IiIaA5{A53anq-cC$=@Wu!&ueI$=xFrSG@Dt;k@_A$Lj zQ4INVHq`_)>{n(nP~jR}D%YCq$L*P@z)eq}YF4UEF^fX>O>3Ukn)OmDmkCQ$#@vv% zD~`Ljg26Viw_j~(OfG#Vuf-;LAYEjVzWc1){hvQhe#xzx&do-cKS?b!isNc*FgJOT zp?w!RDkHOkIWAR?+B!y9En4SwT~4HnHY^pFN%#Tigf<_?3AE3+`nd&XV$Z|NNR-$} zO)-5N#Wo}A4H=LcN_MGb+lVbmQyi$aOKw~eEqb|~e=MX6P#_T2P@1l5TonB=#)3;# zV`xg58hJUXYf*5m+{hLpxM6{S!zBJL%C!k@Z6Qps&<=T)Ey4C(S!J;7sPy?D=<;17 z#%LDs$RMsekwxujy&M?HFYOY{##D${t1%!T^-FMhKPJr}D2+KVr7xP(`eS4Bdr;5c za8|jt*9x=XNf~brL;`uaL63JOn(C?$g5L@?H1i-+^Ytc8flitw!-HWp1q&;?B_+szrUN5^LBaR#=tj_LitV@KApCC&gSCSpNkmWhi$55i^b^0a&Q*XFLhv6h4(E)J zQjOFIC9ugZ5&~Su1)mL4u4|`FVyVH+Dz8=G9Ju(Z5`UxlV-964=BM|x$c0B|qMMqG zXakjO36rQFI9JPUPLsVc8i;r`G|MNcfBGduD`SIX{!&*815`bV**k(BxMOF4H$c5ve2;`jvxi)>xc4zCg+ z8lbds+9_)=VN9F##hz6h0R+yNRO?&Z*}Y`P3o*Ejmv_QpBvpQmmNHx7YD8fc1Y^8t zfHl}5JN{}V-jXu+?jjwA@d(nfZohc5CM|zb229d)b_6|2g0wpyVxwklx2`RAsgGjR zCaaa0TCZBMPP)pD;F1G96ua;BdxGko+v6`v*o8MwS~j*m`t83(h3nMd`#n`{Y#w!= z@8B}CNR;nwH_UgWkWb)+wNl20@>sHf(hWAe;}$(l0;A_$S#-d`9en}Pp$um;cx=@_ z0S26I-XzzkTNo6*Yo@&$8J(%j91Yh_wp~r4)x%$~DV)iE=BCS8yX6dDR%5xBkTVm5 z5`>1VO=fF!*wS-yE%^F-X>g>?I{vH#rCjbMQe@z%laKNR>G*41+voDQRHPR-9?LQ= z7)*?(`pf>C+_E0hXruUyNPO7tugp4S1Dv{a=p|eR(2-_@vb!5$_1S{|vZiJ08jA8v zP@+@py`jeceX^m<3F`2{{lmeA=A}&>HKE&kK7zVh(eby6t{yBuA0E~J9zY|p{Z!5j z75z}!XjY$C;sf!6c|doW_32pz&UC!{!+Te)#gW3XU=$%1EPvj^oyWK${YgL|3x7{* z8p>#r2gZ<>!+`9X){3|^-}=e}zV_%7bCKjw<@R=tG-#(m^y z!7phshRItEuS3Goir1NF`rfPR!9XO7kwQ)H&`;04vG@f~vhJ)lF*-fU87$9s6g zW8x2%Aqzt>7`t)^0=`iU{$jPhAwIhTPn?9s+Ew#Le8t6!(pK=DDpJtu>$Gcfa+;$ERnePBCkE>k`RA= z)&@c&;rJZJ=WpUKEQm+@5eQ(}+#hLL{N`2~_$tFP7+BWMe6l4?0 z^|)G|mshD*Vk9!?W#Pz+-_79{?0(E(EC%>tnnH?QS=b0iB2dBmhRNl4HnF(;yfUQ#8)@0$c%gLOJdot%td< ziB=cHU;fnF%HnQ~m~kf?6)g3WVIv|SEzw-`{1FG)B;CdXk4?GP2B!@oWg!nz(E`Tw z0vp!j(u(P^2J2=CbB|ValIud9f_A}GTzTAoUs(*tx0$|~vd_M%!!>B)Br`vsbkTcF zd&8_51mGqzHEs!$vUAtfV2{^sf;fbA=$4bU*`dUWJOp9ZG^wt^bf>E#Td|)`FPi*f zCiyQmpHN-wF~)CN?Q4S9r}*>PW`GRc4T0Z^<$7T&-Xw?(@7_|x9agAj;0HQt`V^K{ zHXPhn+r-Z$;_6S8YuYp``>#cX9QpdQ*-4uzX!pW09`WE}ym#GvB0Phr-@38JV*-Pi zyd3VN9M+_)^iGEI6~nmhOdN;^J%tXDbhpL<{KONb73J!&zwzyPHK_5X7veoCCULN6)X zFh8D*jIKKz@yxHCW21_wD$p21YI^I__AFwz7$lU4%HY|_uY##bd;WMUB@4-< ziqu^Z6(75J7-`|EP_v~P-G7{4+85HBByB1J!v7&BM*`|0rX?^_+7FsF+s7*38WpSC zEJeBAr$%8TrVjpy>VW&J&wcCFjDDa+tyuz7HuQ(*UnOaOo_F%G)A#@ElpokICCby0 zi>eoywO-0I<3nWMF$dP7kdl#o`fyaq{P_2iqYEbZuSE8`9lWyU9@Y=Wm4LjN@Jb-l zCBQrYWCD!y4!Jy&GAB4-a{oQ7TV`%0$4ro(bWxAUz%}3*@ED?a4BVr&ES=11Wv|#< zN_#O4&8ZUZUw5h?_<%%iXTq&MZfk$5IH(gokt{2-$jx~EfQa%#$4UlW5RB*IK7xUy1%V&32u^9sc^%R-Psgqr{?b# zD^KhwavDn9rUdt%;sEYw3jL|_w1$Tvo)>qmeuGi%QVhvlLVnf68gVk0^=GqGcjr&2 zI>^8xJAJ}l)w*w^G9v}z4+p_YRK2dKDm(1%A+G*mFQs2P$p*zGES?? z!;J{}p<9%HkJ{^DgE0m-WD1_|_S~J--NU|t<;T)yOHnLqR>8+$^H!OqG!RL=$7J-O zqdYS(t*y`u#?>aRavE^K(=D~(ZjT41NE|UQ(Jkqp*<`CuQDV>0QK#Z7q*gi~WoEq83Fd$jpOSByGN4t-R~ zYU`Kdxy2j0Le4?VcWMb2H{{JGxXLjW=8bJ8U4o|dhe!k>eXvZiZA-giofs?8lNrqU ztGk>9GxL_E!sq}?&D_UsjWk)sBwDx1A%*EisF{pHYASI#2&psEF9=$J~d5+SFT!KY3CgQ_;h%$q)XBCcl# zIb>z`Lge#(#dTYmn8+Q<*1@@lD336nfNJ9mK!EE^q6$45IAGuoN4l{i35P z{B=`6dTs>wlR2}{^8f*vke83{Hc|(!)0bUo=BgP+wrVCvjXZFEgF7axZ=?g5?wbF% z)}#9EP*{Xy({N;e)v$c)MJ9R$&*V{w6;;TL8>K%*>D%&7d#R)H{$J+?v10kn+pwzR z=2bUPZ!&r&I&=GcO{z`OZvn8So1*UY^2Y&pp&#fYj_tH=-0>lhfVoGx@m>(+-B>lQ z#dtwZ4?9GH>C+yv5sn^rVTLelLe?K_tJI6Xc}t6jgI-?=bj?2C@2lHH+L~=mObu~& zG)#dne(!4rZ#G#`DyBu_MGu;yP)wjMnsP{aar6!j)OxfXNHB$_vXkBtZ5WJ1G-xEJmGU>jMi?)_zBi(l13UUON^n%*JsExx$}_bf7pdj39QFj&$U zk#MX;+-3sYU?%)=yDLfp=Xx-*;VQZr(gPdo@*_)glEn>60&zv8GVeP!y7nYM8EtRD z;KrxGQqmxbVfODo`!D&;9L#%E;$au@fk(kZA;d(yP@@Q>>Wj@+%-kptzS6hdUFr{@kNe0 z40~AWfRM3Y_=nr+`!L5RxVoMIrMSqwO2|>qmf0$BoAL<&_U-X=t!C>8F~dxC!g44} zl_uH_`z(JHN8regVOhl`9SRNR%oJ6(o3RZn?=4NH=}v8a9Sy6nA0D@VhslU%I)Nr$ zcjR7=9Gs$_v9;g!M52Zpo));x^xXqt%`)MFPnDFjfi~>d*Gz4D$MdVNpBI!ULE4Vi zbiP`0ZCQJvK!Kc^I!mgPu3^w$dCe6Ej!0py50HCvTqPVvS)vs%U<+HF=p0?y} z$m&0ev|%9Qh-xBztDcw**6^dtu=0p(^E5Wd@U%U8}{!pZ!=g>Kg)?^OmwlCs&T!~+5ANu{Z9jV(*pr{ z+M&ffQCYyuv^U#vXQV!f+E2(b%R*hW{}}eG;qarz`r?)vY~;vs0GAMC3e_xpr5)SY zmIoKUsuaBxZM~~jCR5Amx&&_GDGx44iwKxxouNm&T2UOWp;K(258y{7=)9at$4m*R zH*M0ZH(+D$Qe+HmY~*I+v%-yZQ!K%VelQHJWVAWgLuKWz+8bY5_M20DwHq$H3KeM*Bb9WmG#iGm;F7T`lu!D6{+Rn%1Z!lOx7r4KMJ zi-}~`I$X<)x+`@~_)yaEUsgZh4X<$;k7o!e?%xQmfsaF z?Q!Gd;i1KAJ8!OpH0$|e2luxq_6puo(nl~Bo!o~Uim!*qv3c>$_okHInpcy(A*%tK zJKwst|5Mt2H?CsiD!_v)5RULR*S&#U=`o9^xo0Q&PnK~DRV!k>qih&}K`>h%P7W1| z)8H0ZZi@J}Ac2-QR%(UPM%lI2QzRE7LZH))WiP_rbD+q$s8VTOZq&M}%EOiZ9=2v; zrMR;pAbV}Rj@&I*0Z$BI!+If`X~yVZYu}Ji?2aN@a$)|?GLQjesCOrEsNwW$4eic~ zEN;=asEwu0wqSVKFt?np1$Q6G3vdo5GR8|~Gf7ULWHfW@2)uIJD%$66*N+8ju5o>i zPPI?^M32dRRGg5>LM=_4QO)n{wg8uinEgsX++d@OZO z&i!86V}Pg9(uxzP*??K(%gTBj;1wC8hjsDYsoNeF3Y?1qbDi8+m0EB2efQ)H0Ywp( zq~ z?Yn-S;Y4#JPPEi_WS3WXv6YgSwFRXJp}J<98+}@2F_{GzNT^lbq8z*4oUqovY^Nj3 znmvZ$jSphK53}Cfx|f{#1i>rD4VN?F4qk%A(%xu&t`#M2wH4k42pDGe4-P7U zU%L$!-HVHr&s*ibS5(#fMr(yAWF@;}fnTU~FIepbPudvFP2njNtz#MkEoGUaF3H}M z7oN>ZX-M;$lS%J5ZEfEGwZd-0-DA9fk<@x#Zaod4c5lhtiIKBJ$3jWd88P=)!%B_5 zmdK+W`_WJOI&J+QjBWL3J_wnKxqte>lDVm4fi+4Ob;p-(*3Z|ima166mr8?%X2oNo z@;UU^FJO@#!9OTn#+zM^sl=d`UveTs(^+r&>1%Gu=^|*P0B7lec&x}9oy&`;;6nd3 z(UBkE`JZOoulKj+$mgH*sc07BWLw|l0nf?vh9CST#Rj_g-lhtPgw%9l3|F;+4jzTn zt$~h6GEf4z6IGly!ORx|#ELY#H43@RIk^}Db7P|eq{0j=SGx3cF|{c?uZ5fptj|m` z1NQhYxH0Nn*}`1AiJb9D0-{ZJzi_FCfYrZorpajhp}*(zHetd^bA@MN)iD1+ zylf<6t2HwDhc5krY~6R^xv1So3?4LHff*jrhQ?-Kz;wGF&RF-IrE+Wm(QdRj+ErOwg|3Q+n1-#Sla=#)jgpp`l84}6u#<0=i#s|@h$3O>;^kDKuYqJ|XOFOX z*EpFXRiw`~L#DJTlx}GdELG`BCJ5)XxUYwngU7}^^mIZZr3sgI;YUf6+6Ib+^YO2~ znm#vd=t6Zf_Oz^UXnm#U@N#defi)yU9f~PVJ3fOL0;!fl78%TuC2mXp7Kz06@Q6ul zika{MHL?2BuS*>WHm8}9^=8Ui-1JMq=__q;5lq9kUl0woOAs{ncfBG#InYTKh84Tt zoM6UAN3osba&YFIzUWlvx02&=nRQd}#~;Nx=Tf`DY@iA}I82T*x#oT30!pK8IA}k0 zXcs5do8xM9R$0n@;>?G%J@Pv#WFN?#!LUYUNKVc^(vJT$?GoJga);AmryTO@`v#dT zI8LKbNMz;Ln8+waf@z=OEJlyaoVoV;xC}4FJA`8|p36k(7D#nCGsB~|ccHYzeguN4 zo10J!2}wjL_q;X*;i+}}0#1>G)Ah;{Rk=d#?nfWR8H;nUoIf327*4#UaQ2h?p109g zG{EKkC^`%Krtl#jVo8P$QBzgz?Tqkbb(ubRH+6a#%bb_f|JJ@`b`NRcJ{T41N9&@E z{+1D|E%7A_hrqUGnvhrlQ!xz6YP;w%oL$D;b{kp4A&&FNVP5}p>a%kV zzY8(ooTW;Qwz0{IEP74^k@1_$tx{f@2nMR;;_kLXSFqX)p%V1G%TUnBxx(3c5ly zm8N=&U$T93*FW;LDb;Gg*?1#mzr1^j?Ne!Z-Krm2VWOiaDv#*+zZ1#H$fV>oSUq{Z zy*aNmZKNN{e$S?iGR%xa`Ed90!9rWx`zGF^#j4yxk7Nbx858#b^Mc?UqA-__kEm9( zD9&mRLoC?rQiu+yxBuj0vYi>qFZP|5T7400Fe#YnZ3%u{M9d%3OdT3)uonU`xP#>D z*ufH?{$e#^FHE6UE7&!(sk4~SO%Fj|c}xp4uXModM01p3ADSZ%?~W(gFW^aK&n5J` zD8#}<)@5Y-`WKJEmz(tNkM+|{&@E>Rtp$^+WvTCZjhz6}){24MBXA@J|8)P<=e{Jo zKr1>#aq-sNDoWV7UD_#X^s>}f#S;mhN&lJ2N^`=iL2=r7%G3iX#!bjK$79k*+ERGH zZ*VD2e)`>7ze~hl4ja^W(`>Yi)ykVFuf^Yxtd-x;axWX(?9>`>uua`#z1xOWW)OY5BOzd)nIZ2qKmWeDgjJ~h+aK^&&OqBI)8+H%TZwaxukqY z_jg<#KUs7xxeO)tH@gqK0y#ZvR#la5X`7dy$YaE_v9doF5-gRR3Z<|A$B}L|L36Wc zCeVP_-^0lozc?J}B0u58RGj7Y1uFTjX3*!PE4`)m#inY{Dr0@Lw|{r7S}e|0ZEkoi%i1);8t^pT%F3KHurbEzQLRW9Ob4^pX+qHJ5DT`yszno%gKZz zMxTEBt|SOLE4djmX7rh`GIww$|Lo=K9+I=s`7KlxdL$Z)p!i21_-1tAZT+8sq4JS4 zuzi}I0i_0tN+u1>FNo^+U7h7?UHZZ)x`&iC*;a>b-^9Z{xkbWld?a0sadPK>+p+_0 z;|(6#e>x|$H}r82pcv^r_4p!PIufd3{Lg-(Ne({>cj_diWmuE7%C+WZTu*?D=Zi4J zzXuLE`ktt_6IKlZLsGC4&sYc5%cxikeBvnk4pHT(=lhC$gA$BBOC5%GG9S{v4G%V7 z)84-talnXITLPRtEvKmMl_tN`gBeMD&~{W?vw4Or!Y?eeDGxj>0fMZ+9~A;jwF0Od z@Qc3Y`e0QxTVdznouRjV<$yeW87ubZ5j>i6cB(%8(q zKa7Xbro<_>n=9f-5JyvDapl9DO)wqTyYxJdygWuu5-9eFR`BK#RZ%~ANL(OF5%njS z5>5rrB}t1S(Pvm1j(YYr3HzD=_v32X1p%b=0vQZ(t|lLcoZO+!uBOZhD7=0^d)vCt zolYzYkP7Ka;EkI7o_xAEQDB{%*B5pNk`*is!Q<`umX{SFg#ErJK0xWNL9KdBxvvM) z8+Y*7{8KknL^5F-B`P}^3%r^njvR@q&8^c+4&poDHZXEH(OS;0EEWnZe%QJ8+d}vA z^6M{-3SwnVtMEB3be-=XnCbkyc8xaxgIi?gkk8nZ8&>sEOoGO)Gc@hL^<=tnQmEY+ zzQ{E+Bs%Nv;Pk%z2*)5y>4F@k+euT&r+Ord0$$Z|Q;D(>Eng_agPsm|Bdk=fuhJyn zm9-VW0udk@?u>|LV8z@i4NbGmD>o`Ds%z`E$`jn)#L5l~mhy#;2t^E8eobD;QWw%) z@Ygt}%GKMuxMsio_$R5Vc4cUvL_t?~%*$0{Z3$jQ$ttLC9WxmnxtXq6+q@|b5`0~4 z{kwejQ~xp>joit6KBH1GF8>rb@fv2lF*$0YSOEBjfvek>A5;^I=`Zg^+i2gojQvMN zWXtbcfJ6wEtpk_LSMomyBuksaKYEW$)JYKUHW4nX zx#qhd8vc`9Sl!rzWf{6-tD@#7ajE$~d4sw&7djMYr@D)l$Lsr24L&zTVZ_Pj{DWEg zO_&Z)wbgmWz!E5q2~dp8uU@{YQi7dNMpucY+~3St#%^oi#o_DV3A^@KZK~6VIp#~x z-Pv>$3xY-pD{NG~T!$@i>NmHK<3?g7#k>UMRV(tc) zi~BISpUGMf_OGIkGp{{w!K&G+i9&`30_K%f*NkXr3s82Gn#ScRVyg#S*XUHQjdj57 zk(QX53Kx*bb$_}|eLy}#cs3aC=PEd_Q_sq9wi{A@u;5Q^BM?n7fZ@kqz;@8cR`8(? zrx%TN@U_vZ)q5|bsYVMtfQs}ODg#{AAm*MFu-Z}CHU!0_=(!ZpeH+Nk3~_=`cAmd- z;aj32A2cb>$TukTG8j#5W=`gO_w7XIH0-Qd4XN<6Frl(JF=zkHB{fC?6XN40L~CPP zX<|>ds9|&M-S+eUS1I~?xmdglUB2v;ts@$t*6G2&;D3Mk08o68lN8gW@0}$z=CRmJ zdXl-?i9PYYc*MV@7N()$DXdQu-)u&y$=5jdgR&U7ed1Kc`W~&uh?eVNX*^W_jG+kQ;$OQIlHTV{u%zD-lau2sp?$>aR{fBXC5*fuKe}KgE&fDMNJ2zJw%Yq(59e0s_ z{>ss!PCoR05v1);c&~K?xQmZW0Okjzy2UD!?I}orQVTW|vBOmy1IG6LKH!TO|H+V7 zO(PdiVJB)vj+kadFAmJ%w+bTtskBGWfF;dbkdvY-wXBeT>bu8Z0qLV9)zW>qW9(aT zcEud=G0rwciN)6PmAnzys0(7EZ~0LslJYWh7!bK`b^Lqb**-3%zw0z! z@ny+{Fy+?&+B-!pos_~z5O*{-M*K};!A z_dnnnA$5eq9Imo8gaSGb9<@Zmh%RGKR7er~K*e-+jTkftRWt4+!Yty%k)7F@KdM8Z z33non0Y)vVp{f5+byKB}p8ghG{v>_<9*Ba(!S=?GDFS<5^{Ic&xYd z=$Rh)wv&ytOZgjQnmchT;6IA0JeO&ZWEo~~`Tktc_D_;M><6E~2gv@ul^p0?{$0-1 z@0?CY3!KeZ9l(z()32b<5vBWKRbR|1Rlsw_+d#)d8{0|*-O~8!cQFv0EMNcuH4mv@ zXXkypO_&zeCm*8rxA&<;eq7$2X{A>|q{+r7)EDW4iJ_LJ4i(=M%RVLjOemJPRyq25 zq>iGmn|(|@{HM~BGIL$%@E`8gnhp~pgo`d(Uj<_^*>D|`Q##Ik}cfHOLgycuB?__wQ%5 zn@m%eJ?wSzlVXkiyuFG1%db`wBPQuf-I>9?ZeEJ_p@V#lMRUd*t9Z42YFmdlzP)p* zlnX)Q)9N98O0ojCd{D~m((1}5dOAz)0Rf$>P|Lp2#iEdY@hbAy7b-Wv6wZX8P_fX@ zCnefn4AQ-{wa|WUbV^og-1r~_6D7n)?=(rWIAz*nl4NgTWrzKj6SD)@!yyjDVtwv& zMMxenq0T|8Nvz%2IS%YdC@VHdPFlvS7-3J_7Xl3m%{LBj=w@WolIsSP$RB2&PtQp7 z6+qd%qJMZB&$4b0E*Sx~e^o>L6JZ#o%utKd%9=p)XXj)LP0b!hn8IVcZcyJ+19wcj ztx<8lCs=^Tw4-fl!s$|#yG_%kKE7eFRxNGn=0o0Pn|WpIch+B94J^|yq-c#4)w)k zbkx#vB|&GIqLJTn9~V5J_lf^N0_x4S!JsiDO<%Z1MK`|k#X4v=s56cHWq0S~0H@q) z#Z6gZu^ zj(}Gi5L8qYMgbfipW3THSvz*)X-Y?O1YBKzMnZ&;sCQ1Di0~)*wd^CoVu!?hfMvyH zIy584+k}^bJROwes~anr3)uVg6*P|ae=ng!@HRD}8N1M8jjQ(jPyP6PZF{>pXo#Eo zrXFc^vZ=#xYM(+f>xXkhaYGg3vUzb%J_~$C0ZGxo5$32^25d>|@HxL4nUVNpIy(}s z@O(?4k;V?Wh@pU>Q!~OUYFAVmp9ej<2j9W+l*uCe4H6%x*;JS8GTR7H4hjiZ9Uj%@ z-;anoO|IHMKx;%X8>0~La_c`mi`;NhLEN5b7Xr$g_Wzz`G2B5Q!35v!Ad4*&tnx;9EDUa1QUS zE9+Dyy{hmFv=*VcRWwO!Q}N;a3&#j-#ktRf0NJ8YlqucOE!pzB>dU1ZKpcf1`eZsj z(Y~p%=zq}`s3bSA6ZhTb4?(hvG|}=QtHvrA6=rx?hU@@g(XaULqfzia(cMVF+a>z9 zw-XtfVEB^$0pRVRM~c)8qZKQh*ZX}+i_v4+0^SIQgg)L1SP7qPEDG+2=klKIlRw<< z^LBQ>lz5KbAjR-L<~I~9frG%l?mQCN|+H6ui5<_6a=+kRx<@2GPEUq1$)wA0%O zNI3R!u@!Eb{(KzOhCWBH4<_Dg(7b;z?=c1i5!}~9fxM{TH8Y- ziQ>+ADC9bg!1566?}$%9XlJ5)l(`9D@766|13_H&+K8^QHr7QsM6-X`f8$(3C3(4D zh3!D(F6QlNOKL{e|M5UKxBodq%~`H{8YpE~F-m^@$^3h_;rpb3pbyouWNmUVHr&wf zjh0sRE^OK9#T!fjni%>i@Orbmr>DO%$b}u7Cdq_;$F5Vl6hHLFShFQ=no+6)e2EH3t4PA?paN@0g%4Ey?5P z5B2=4^z)7H$eK3|Q9Da8j9+;d*W?dze*a4aXtdozaY;+LlVwF|{^0-*C+{|XnNJphDo+mF_=V?Sg{VPo&|W3OTNb1)&51aa2fKu{~?(nR~@ftlD+kTdK>r={4Q7mg_W_w+|b|*xWxt!vBK=koB2+55&wJ3hcz|LANQsrYNGMUSlEM_L@ zw7CFsk>9i0b`YHxaoxM~yrgJ8HG2eRltJo!diYe;kf*)iSXc1WIx0BI)l~k0)#R$* zlsunQpSe=R?D)<{*v%~8PnRKaD^<5VO6XmOXI5GrEi=@(!?B+9Gk7Uu|D|;UXs9!i zH7a<^CuDju-3Haz-0fUXp%0lDQ9FC=dij|UtbM|13|qe9XU@Vbp4>A_ayQNAogkjS zn@qfWK1>whP^PXiB5fydG8YUy`tDhkX5!FYyG!&PG+o*FZxf^xUc8W74r!dyFb)c$ zWMG8v?7;~dLyRXT_L<#+ZhArif(UaRP{-uF6-}onJ;u4tT--D2xwKEbEEp3Vy4A}a zg$@zIjhCuxeX;%VCJJNK8mX|eN(@oh-RKV{>Ze#dDI2gN@QbZ-C6uSuM^jnuN;{nl zlPcm#PYLoFzAXs z^-qV{Z;!0~gSQtHM8(Pmh8B2Db%C$$x25)|g>p&k(aQ$)?sf51R`qzH;RL7R`Bh<5 zl4usGcdsWUMt=*2o2uBWPkY$O>zIy;qIL}aWBN8mLH%t~ zp9fRlC!c?*Jv8nAAUWW@*L$f@h{c&$jXVs6dk|xEKphdggs8rr`tNRIG1egV_$m<& zV<>E^hQ=vPohHXe#1ko`_RN9`>~|B#=j7 zf-~(|OEm%%IhNu)IqGCk&`pM$`!kv2m+0Rt5PraJO_n(~Rae~Bvc0XIzRGSJDrW|i66=>HiK+*`pr;avHL1IHa zQKcH>)Iz4qK0zysq49E?pYJiP0_*3^{tjQ>U4quRPN9R z@1eo%WoubZJ&b+f7fMJR_BUwdI?MaxT=M4~YT)kCf9T#fZmeDFs$X6Q5WNPt3ZJ<$ z$HyKoWO(qe{s|}!7X*+Gz|^6~?Ie7CQ6fpzHys5JyUF~T+uzwk`DJ4#FajBRu;$KX(DrtaRlaqzr}-MENDwew@OlCB zc9Ga~a0fi;DIyu``;NI)ApLctgo2$d3#T`=g4>wk>|#eaOe8p-)Qxy)rPfPs=3`Mr$pMZ^T|*#@Mml3-D@O55|M8mUZhA_t3tOf*4uro>*ND zj=Q;@*1h3yVgiv>lAfO%l*>-^F-mpk zatUirlT;u30vbM#9$51hOR8HYHCwj_>=+#*s~f#fPX7bDZ;os1IIIPkIEUyMU(*b` z5hWuSc?uxpi3{d~ulK=>*M>m09d z#Gj&qIE1u=i7`4;cH^qUPuy_7;tZI6-OwwJ3y!G7AHk@l6oy?;d z;4KHcXuY~y-8~t8`L}ysGouP~Mu?g?9L{JH69%|W5AnGX>PxUuRj&Q)Bx3|v7EA{x z%bHSJkXN!6NkKFvuDj_yPQqzWh;zgu&WGug?^$K!k?=mYg&9Bf@Dq+<5+Cx#gLun& z#U^G?__Cw6^D84j@!^T^)J^+NKS;XycDV9Zf(r(nPAA#PEl7~WX*@V)yCT}7d3a8P zmUnLOXb*-8xex-KD$f@?^)-Olcv>szv}B58QE{8{BI!XwOcY$(ZTyIM25L3z`-SYx zgq$7iK4!b7hV`5pt)wCN0ioBT9(gjC)26BY& z1BGCE`f!Fl(zgB4^Iz>PdTfi!rN$%%hkXR*6VLnmXq1E^6H}e>4rIXe>zDoCQaTo} zSaaq@IWFL-I9G{jR6zhM*b)32iw0(xAo#MRf2k8RAyY3vi^ke};4U18qK1IJ9cjCa zWoELmXw{)=6^m~m?1o7ZITj(*3+F$pSVosMu2K6%p8dTtl-pb!Vz& zbAiUXb!|N0_d22L5=V@%wR z48`j9wRk0drLXer2uXFmIf&Bqy^D2>DiE?LArET%C&qevO>>bM`D+eg&G$hNrAy%F zuVvqGoEO!ndxv9t$Hw_H?v>)f{m6ec4Xc|7+dt8ZB8DQ^q+TO5x=B0vENy?=EVtYV z6U0fXC0*Qz`vc1IiA`)Hw~^Q~LmWvS0ibOX3Rw%(r*7?0{SV!DcgusTba=_~VU5O- zZ0tg#DgyoUuirs>cvw3Y;o-dYc&Er1$GaiM?#r`y#hw30G5rs^VEMqye^KUo31WH^{xA<7(6Q5ayVQFz z>Vd_l=_VBouo+P$sjepK=Grs2-rL4Wzbh-&bFS|d8>v?~JlVhECc$CSY?X2C6Ll|C zyz~(Zq0Y^4ywm|7G}%^`n`1GtVg~q9Le11iX&V+JCJA^7_{FHrKenxGrKqP8O^;8! zJi`MUj(;`vm|L~?9S7?h^wB?hwVZefh{q}Rzruo2C1YT@Y)D`Tb|?%L^bXeENNt!9a2|ct&!!3YQtzhHACZ@Ub^6muN^X{k75@QE#eVFg4G%Gk3 zHp1R(vATOMd>jclvpuHi>7MqSPd*Rpepx`Myn^6XGn_Z|=!GH=emH%vOgIH|Lb9$Z zw3t`b_K}f+lX6qK9f`P;(hpKh@_ZT>f|t+8<=pCl>*%&7rSk$TW8OKSboX<^AE^yu zbBXZx(S+gg0}ZBc?@>)(>Kq~r-oS!w&!{8Hw&sc?5)8YAO((6*Le}DW?-$~y3Bf>REQnCybNG7||myHXLzQfvK8Wq{A&9f=E zS@)N5@~K~>_?^}gq+hj8RzTb*vbrwMToaWZOv0~jsvamrH8&&lUSB_Z*uTkljT^vi z?aj`ry06PY zBWZfX-#G;*!>oQ?3>Z9RNj^z@xZtmpr;w#81AW!-C70!QOIkXKB8ha}^$FO$yzdR{ zHgA?uk3LQ6M}8yP9fenyhWAozx85SUnRoKepv^R3XmiOW_su$A_As4~IAR4Hg^V#R zw3HpV9(0!$ct~O!=ZQNr=#w}D*S}n)8i|*>&h*1<3EZoQ`Ddb(`ak8a3Kp()emSM6 z*IYmS$l)b_)7{9arX_xHEl`q8@FxBNB9M{CDey_WbJnY4OrM-t(6qrArOe<+u{r*P zdhl*t(lIEXJv1!_1pB*9v4a#q)NYT=b6@_Bt4Ou_3}y5&%<--Cptrvi#QZ`eyhXxv zD#{BfdWh9?Ec*1$JN@T+Gj0m_(ONYkO!>5Z-OZ242^T%LoF&oQ0{wOibEAT>j5%W{ z?&LjUDj8V>`oPZXfgN*#iQR`15pPC92bbx0w!U5kI-3B>BttQLbQvFH(a`0(b6PU8 z>-JYkBD^~$G-@v86vqU2)?!D!IfSyi>``0A%ZaYxP2{4}a7d>8lsz)hvIS^KAfl)+ zPa9CbW?ntQe(nRBD=Ycxyz(1*W~{X&&V-R6dd$b|s-9w{agzO=Q1$wZxXis18;=BW ziwtmR#h8FfbxavbtA_mH=KGKS&gfS;Ie1!Dfu*j9XkJWqoG^J^raLd+cc#GjZ}fcq z_JGwZu{)2wL&{(YS)NG329X*$xph8#iGdYY4Clb&@*w(bsk^uzQa;9~RJfXRc?R~n zWjmE?rfDs2t3d=G^yF-MOSG6GlBpnLk%$eM*}-jRuUaa2ehCcAX5o;A8N38%=r z{}1?W@ttBE3kiu70~7B_l7hmc)`q}oSxG=L+%iA=dg5oY{446;46x22d+kamxNW+A z{xvaRh;MlUQS4!IE1=(r*e4)sW%1|BZEt@+HSic#yM}RsP7Tr;It-4CDXcRWN0aq- zHr!bmRw35G48sol1Lfcm%i7uYmR|-l4@@THp!nLlDaKqpzC%peS>x1@=7Ga9dE`}^ zQMwlj<>~TCuf7V0BD+ZK;agKzmT^tFfp!pLxeUUcxa@(=oS;btZt&Hr06qx&rU2bsZvr>pZ z^MRNIk*>hp`(0Ov$xrLc`z39D9n;pn(lb5Gj$*(CzEuj(wKOBv|IX|cjz`X@kd4&^ zln|;s7uso%U%=N^pfTQalEZQUcz4VlWH8L3TKM{!FS99L;E&KI7dyV0|5_zPlh9Bv zD^iE*@8l`uv^h6^U)pKR_K3lKfhooF!}VX$hj9~RN^A8RYi8+i_fHJG($Ax`CRk0&jT zu~dw`jBx>nY#i8l6GoF3YHC$zt;ab!0&!z6ucGpG-u5VMyYOf5 zj%Z4Mw{{`{n$jXUN9wS+N~4v4BEQ3Y^Y{`gBZg+4j0!?=hfRYG;lesa?Rp1I_N>p^ z`n?}PlzwJ$I34A_16`?w)dZ+SzU}2!oB8&E&=&U#zAi*u=gN$?0|DTtA9|lk8$pox zHMd>YJk>Z~;41@uZR)=+^aF1 zI7!!E7*oabf-#bG{I!V)L#E%-CIqKh9!ADc3$`cd|0vy75p0{1W{LJ1lvP^~?TwNo zPP>Fp8qPf)-GqRon;}>Ctsr)kT|M>IP!pJYtpwaqS2l8V-&X_6gToXq*5d!Og?HJtZ}Vfaq4-eglKnLmSB9QWhs@`?p?<1h>20s& zYrl1BCLhgz9KX#Sz6N1EKgm1~!zDtkV2u1gYFp_G5*O$D+KD3nEkq?k@}|mPJL61u zStXxUV?6TLL$1{W_t9wKE3h{ibaGft`Pcecv0uSFx_beSt3O6#ZB~$IVDaF6R-7ZB(=UdbP!$DTxk21I8wrF|sPg zj*7+RfhIw@MEfD2xC4I+qjD#-5B-RBqZ1YQ6$@WJ6iz!xGY!C1Q~}R?FC)TdZL<;> zC%#PMk=E9zF_dWGm{UfH+Ev_GHNRICWT;94AN7SJj_S1X;rg~ zE6Sg?HNviWpidG-4jE0Y4eh*0WR3tjN04u*rVgC4YkrU3LjH|J%AVHLEtpU|-_YaQ zC8WygxiLPAxEjY30x%sL336U>?dEYB=2p7?8JDQUTrPAzqJrOyo|1pYh^_C7#%?!= zt1G)7V`mBaBEH@%xCgV^nToIkwDd>>^Nyo=k3%&)1jAtdf58N2LPPI}^YT$|;x%h5 zC_L`y)&X_M(>#C=dr<`=2x)D|*ga%3p^72&ElrJ@9HbB`)2E$|7O*s~c9~ z<7!P}hy@SDuWe9QUS!=(&si%$yRTfflKM1#RbxzB{nI0renC`O=sEd(IgPR2!|xVg z(3{u4-Fy7GrR--T$?{fQxX!5WAZ;%S>hIi>WU}mIBV@{ zOFw55fpA=(mm}`MyGl#S%!r3c@tp8R4RuYf0kBu{H(|LAEODFH^i{-z=^C-ZMS5+w zXcd+VLTFCJHqB=BwI_-bA~Svemd-1e&f&86SZp>@MC{hJP1WPay|hiXGL&R|H(qqd z7s5Xym@?{$(G2=iyT0a=DE5YHAzG7Z4SP|^K&0r&?Z?ssOREj*HaXL^E#_)u8t9vc zg~rsw-b2#W&Ci3Ux$sVlU2@Y!I`Xn(dfIMN%c^g7+IjQ-nK(8oPyT=XOXuJHAERH5 zVfS5>6JJ+YI?u#(KVPgvFVkEF1z-JH?ctM+!KSHCL_k06Mf%x1wQl5S+SEo0AN{ZE zeeJ!?pVwjk*XQB$HlX#uHOMEUmDGIq{OxJ$YHcfUoP)b|hUjY|>#2*7tYBCjJw(F1 zTl@6|aD#s5sE zpA9w$S>XTOgxq8FK%Up${cl@aVh$4{o5mXUmg5n_j+UF8zLOTr7Uit0KA7s!omN{s zHbsz#f?J3Y8lZF81c8iE7OkPBLI0Yi=E&&!Sz*nhgFYtWp0fGyz+mC~ygi9{jj zUXSUT168MLL4A2Kf}fm`Q-e{JN(@`#BhgMTCIVNZbyr4&r@cc43v;Yc)N7~QzW5fG zz)%kFq9?T_fk|S|M61^-RdrCCu-cE-?ASk{_8!_P%a}(}qyaXP zH_f&ldgr=CQe;>QQLNxY@_5)uQG z`jPODEMkb~Js`=xJ{4TE83EM7qTZ51sc#G^T%V4HK)IfHH@E}gB&q8qRLvHqz*mMz#7kp+! zt)mT*aQiaX<>^SVz-!=@K3S!h0u$tw;AvCzLaQBBqD$wiatj; zay1K%XGc{>7B@kJ>1Y+{>2JwdaWJooFl!?}VlsCSa~~VR03PyzhfHAGN3h;WU&JKb z(-5hm)6esFhqF^M*|N8pc>!dv@d9Gq7XxtJ9`*Obh&=DHKc9K`2#}{Vdt1nOzWnT_ z7416=B4Q{Rl^eKsGJ0M4 z?+-fu+a^)utWOxn6Rx_t?t|~{VIpy=VtCnDx`wd=_90gCwx zn#-rZL+$j`KRSCEJs7k{wRLP9QukgHD3#Yg8m0ajaLSpQJZDs@&jC$?o17MMTv>}} z^$?Rk%c5&mI8Bi0x`)r{5~$av0j|ig+->U(AoKHDAqm8|otcfk@YQ|{apYn`lJDhP zUyaL1_}>&NG<1C{y-%{TEM%&bymF$8DU<&MSERVpIqM@N?$8U8BW$@8xNc6Dfq3m0 zdqs({J#Des4omKs{FLRYn=URcMB|cOKYr3@$UUDd-xi4n@4lRwPKGr$1L0oNu#K~d zNO{~A8}m&1clq)Web>|cJ-+|t2TZ@y$qA7u;4d-LTR*|FH}VH#1D#q`kK4kKL=ykx?*vk~)Rd>2IdAx!!;GNMepf zZ+*F@vdcd)r5+d>m>X&TuZoqsTX1>vSJ@I!^ zWJnV9(OC8P&@fkRM)r-9G`tKvH685${mjJ8&a%>9qzU`YGVQMfPO2AP?~-Vm!tdyD zpE!$$)L9^^4(8WH`FWhWD7xUf54smsdM|KLfYdh_Z$?+CW3kz#zx$@Hf4-|` zu#sCZlmCeQv_V#*sxZhg=AVvM@K7I1{jClv{n0lltw4hke(3D;Zy$}01#!j8iC)2w zx`M6=-Md1AuM_%By0d>7WFPHydChG6(RStJ$%5ZrG2VK; zw}OV9yPpy$OS}sIW*U{B9{(Uxw?}zYwJ=Q!QssMk0r>(a{dyM}| z+yFeYw0+geI?_8Bnn5?)uU9jI+3Tn=dC7aym#e4r>0Icj5*D&5Zc{XuFhccQR#xpF zI^6~{@qqOU%3f1ZJL?`r7)2yGtoXX9AR1`-%ivly$DtOqAuKs+?0y2FCXwyrefrUC zA^UsHEoJY(q9UL)BAKju{^hy0x%@1p8BphS!^mc&rM3tEAvZgbn<+=AHuxY6Npe^4 z;F%tv8Tei5gR4CI6<#O#tbAG5Wp-w{uY{m?#V(%qFF~c2nr}v<<1YqvL=a{q`+$?9 zcCO9M5QnAdOf;;jJ<@jx#kg{a&XV4!FLmY|RJ01xw5w(wrctw|LrU$wVfwf()h?pbwD`QJ5n9=w1bZIui5Oz)fcoh;Mc8LWWu90CJ5_P~*^!dpDSjg} z5R!s*xmfFM_1!M@WmK-h5o=JDL00U%w;Mby`Lc00sWLj|x1ISEQb4XrXf}XgExQWp0OU90ZiobC zWNnM1dC2DrFnK8BbrcCn#c4Cet0Kf?JP6;Ff(%cBj*BR0jg81{I!^|A#3%L}sVYx; zSIOgQvtIX~^ToL)h_Pz0cJ%(ZtJB)j4B?Aw*h6$me4HwuSF<)k)jOZV518pcJ_ZC+ z32AlszQMs~6YlkLoh&PL08Uy(8)1A64&ZSfu(J%0K7*-aeiQp90{@ytj|XjqI0xpq zs&*MO+Z?*Avf>%NlfHSw-FeM>dgJtFcpr5iH6v==&H~J&+Y%HP3EttMr3lg{UQ&`x z3}?XX%P6D4-jxtbQ|KsiR^xLJ#+6&m82i?;V)dEYBN;}VSW4Sq=)w;6L7hi%3 zlDy$G9MmInj#O$Z8B7Ur0#Q5Y?{8m*sLNmfU`=-%-`M(0I83_3hgE{5$w!v>e9?dR zJPbS|0Qddm?-wcX-{x3v|6V=WQ1VtFU@GnHcw%VyqFv0?}*Y+_Zl;jB&PMfJsQ~Y^aB^x&^iL$j&YZmnF z-9Vy_VZg@?%e=N2EXLb`h<`t0?P$By&jtF+N(mtt5~s{e&t=v}AF()TPuv}~zXBeT z&SSb6n^f~Vxj8CuBTY>{$_&}sT^%`^j@xUz`Kurc88__MwK`~KU$z$^{z8@kZ0f$gElIwWk(2#Pp_b;nuEp=UoDAOIN>ZNl=X%-**?PlUNjzk#P*8yr;rLb$ZD#! z-ZLuQrLFR>)#Ae2&-e+~<)@boGXSRRH|?Rc6*Ojh(viF-&m8mpF?DGkP95oaQAOVP zI(_-fXQU!+@lDyY$IbilI+e z!<>UXFzt+2V6jbsaN+QAiT9oD=Q~**51Ey*t7gFf`?4-fQM~Qnl2lm4IMH&9`FhQCKBn zI8!W45X~F#R(Af$PGGGqmM?X$8)5zrB%9Ox!4Xe)gXHo+57+LnTJz z7IQI}0Vc4*%0{9Q{XoNjhlijN`hhST>&(f?>7cG#TJGNz|jgiUY)jwr>P0i z%I|af>u8BzN}G}aM{C}tt=Wn=n3mWhvfK3bYMnJp_4iwvBwFe$ye3KCi4en!@e)YO z)8AKP=Z($evm%^}lq_RC3yQ0*ok@aw89YO6+VUB5)=*5%>pyEYqb{=?dbcT7nyMs? z?WLYqZs6_i4bL78;I|HXpLH*9mbNYu-_;!fmk$Jl_N}e0zYE?D-o~9;%$tm$#Fevs z^Rr50=vDHsP7cBOLjFT`P5UawfrIBkch0#5J!Uxv=5KDWjESC==A_3u!;eT|X$sKx zv$PU%e{Z6v>exO(Q5;^58McVaaa_2+OsIaMldKMF=zw|%QKP@dAm2m31 z{7Nhzg#f4%Ckf1n#Q3x_8Ju7}F%GP(_;nw+>9g2-niCMmJ;2&wo+*Y>{_lq2^ zIBktFx8?N|=;dGuoey5hry%X~;F@y&SWs7eHVqQ1z>a>0oS`MXw5P!6G)s zLRVE6lT#T@Doy=LET_6e(<;)D?nNE4&c6opWv-$h$btXVn(z|OHJoir)Rxbdoq<$J zx*5q^Jt>T91>~Mlv;+ddoRB%1&Ali3X}6tUwgX%>Q>#_@8{;odgkh17?Jvg|NPBva zvWmxi)C!Uu|JYg8TY zq@VJ@bwy=(V;8R#OyOM!R?d%HZTnt{b9il2C7aEPc|p!0(&TKGL!7PQr%Pv-x#9x| zwPY9CY&1ebCnB0QoGjbgEw^{E?VOriEj`aM z!Yqw;s#r7iSP2%4{A;zzZ+t%uNn+Tpiz*Y4oWL?Hw5UL^gg1i;DlX|*ivMO6<3=cd zBe;OZ)}Ml%gS^-})*j?|-LIoC`s+)rP1{QJoY24%8^x6s>M2n)6`spFxUz~cm+zzD zO_ie<-&BW0iU(T^t&-yPKx^EDt=TBfie!C^v#HFYeY5qKx%@L{f2#D#-7Lmy&8`syIh!hfpA>QD*tIt|dzIt2dzobyi3^piEV7jm0 zN&VN0D3RI~2c4?-d{hz@wZ5d|1|BOd`tS+L{+47t=KAx&Kx?gDjcyHZ8P8tAE64PR zIjPv#|JC59#kyA}g)i#rp+8VTT8kF7(Y&(d`N?K`!^Q^Z^Suq~%_yG&6@Z|&{?{X< z{ZU)EpqbU6tg*iucRK-7YajMVRV}8IQi&~+)XT{Nm&c4)Vt1nx2xJpjyVM7YniopC*^c9O?9I)9 z7Ww%}Hz`cB9om5xTX@_k{{%psn_UShGMtec0_dodX2L`Y|3f|I zp3*`6**Fn5Kaf>JG|yeff~#>6j(>K&8qHASUq6Q6h`+0zWlqyIB>!qe0ny1t`d3Z= zac&<)Az$ZeLOla{^IdY2cX;8S)Epnrc$%e-mb2P(D-q0!8(O6}R{l@1?Xi^S1xz%I z>yQ7HF;Dv`JXZ}C4S+HW*BP#M$M+;d+vdoq^jkQWrd^9 z*Xl9daI7`U-kI>~wu(UCk_^Nk~kQ8=v^U%N&4Ra1Hg^UF^>1?SPi#R2~Q_3v- z_Kd`D8R^+&EWWgz+sEJUH_t0-PszIW|ET)L=sM$P-I$FU+iYyRF?VbyjT> z%8gh=42?mkyQ|gk&1`_L%dz+|_U6xI_+7~< zW!fgPU^m@Oub_BOz%?6B=c|ZndU1H~GLikWSXYWGk%eA@r-rb>ip1#G($ilfe1%@} zGg4&pQ|uWV@YffBcc$81ZYYp}7GmYuPzdU6i3G>~JALpFpj4u5kG2+&!Zm0c-u=?$ zq2~AEan5RmK!wwGMUf!&YGLZy>CTj_DrP@Y_G2Z1S-s?Idsb%~jk{d~;S9xE`)B1n z^4naeeXJJ!`5O=F!Iu=e&CJfcKAa}k*K6DUcd|B&cQ6O)|sHmu9X`q^0j3pGH2qs=Yo(*+P&hftIQOp)Jsb8<6 zN8GU+wEsA3e7zcFdfJZ2K^NV;nd}tC9B?qzk3L$LjJ?(z{H(|5Uu8Ko!ePEpI=D%c zi&;jVilV@Md5{`onx3wvBiY$3x#cO7$&r|$oBcq+I;y~Z)SEtp9TFZJeKRYcQ=S(( zSa&9})L&M8Ysd;6<<*#4t94I=eckogc3vGVO-hZ$Evsr(sDD1~`H4HfukquDg6f4$G??x(n=9qA=!*EpSYl?L&#IP+RakqdQ&)8g+ zlEcpJDER5fB!znr27*}Elu=Gj{_^ja9(1ls$!W9ax{lrVcPxf+uG#{7z8I&5psyVE zqZoNWwMA{%-~50JpS#qywRH_#TT7&7^8nKbWyM%uw&-q6UhK<;>_#5-obtr4ve~IO zQVPH9ezyNP;f<_z#cR*Z@a__%-V;bG`TlJ)%khm)h=i{XFM=zZm3qHP2~;-T(?Z=8 zozKe*Fh0P5#gKOm?Q2vy=j^*m7ZD}4k;A;y%0Xtl~u1gr_ zD`gUaAEB*78DZO&Dj;PK#S)xIc3=R6S#`S*#yS|I*v5)feW!IGmF#b#o5tptkC;Jm zJNPtf8VsY15l^P-oacMkuy!?tbi4Hxz#ALC8hN3B*Hw;lKb zKuvj?>!LAF%v5@23j$K%#ePs#V;pFDwWQFp=k(ej`Ikq(E{)3UOp0A~w+?9k?N^K<%Wti(P2uOB?4be!Q&yoBD1$Re)7KxKGewpd!vpnmbT` zG0it=X4`qL|2~rItm%JrbSC`6I{9;W8m7GDM|DMpYG^{dv0b^|JS%^r$=-=0A#|)~T;~v^w!OU4(o>SzidlQt zY~L^m?!3NYR!%Ub?#E$obdc=zxwP(G?F?pSX3qTzEZ#JsO=B-g&ezvWUgFQh9&j*k zSKzilxrqS@WXaYd&=pKIXV=yOu>4++q4OT{3SoP@fg2w$7tKvghS}7pIM03w3Fs}T zB{Dmj|GR#5_xv>j1PGB&T-+n{wMUV3tfCQt4*r8ZyHUF|X@*T>Oo$Ah&E+G=XSNT0 zxq6xOW~1HWV$g!vw=L}+Va6ZoBN~-cXZ}y)PWdZ_{X4)bf(22WwCCijA|ePRlBRo| zwLd9^G)CLZ$}s&eR1JPb@M>vWy~wT0g1I=i8n2z4h=Zs;ILRrq1sR>UERe48#jgc2 zLZqG*6{-2jsomhE-Xi9CGkxy%jCz$fqMG<1r_o*)k}&Iw+w7Kn)2s;s7m_fYIvHpXO2-QlpV3(H_EL%KmKL zq9G3)hcZq^>C_E76_khRFy+y1=3oH zMf)*srNk#|HxrwQ(f#TS4NHY}y{q#5oz3SiW0Ef57Aa+k2}T_}I)#ZDh5^DJKSiGz z<{P+RN;oqN5e{+t4`HVg{P+ot+l!Z&EuV(z8l$1QN_+WCz6nGKxC4cvv_q#S&%U8Z={#tNC8Uc>YKn5`jfH}TT6 z8&`$vuxDx<2!;d`uD87NwMgOIcrkA=rYAWPQt2SSS37dXa=HdDgp(No0tJWgN}K`mo;?CYUVr zPSXT_!I!+u-${MNMUzA+$HNd<%_qRHjna0u`h;i;;CI`)>ASWgEJBX)nNFb@>4aFf^W{0*Cj=Dv$h!Vi)YVXAA_>m+n zYdV??Hn+gXWvnXJvtI%i__Ss176(9L>7M!fQci%bVR#h-Vv1wf@|VXc@`X>!GkL1c zePd-ABcjH!6-3d+T1LeqA|c^Ou~FTCrM$=snTISsjAo4qwwMrIO@#fpJ~*p$#E zg!`37-{wZH(0hk1TI^)Ytz*a0{!;4-#>U8%xI4NkLBiC+p%lPNgbS{>s!;PI0J&NK zQ3>DA0KZi*f*DdSEj48%dA=oY#}l}uz3)bA@vTly{JNvbyo{DV=q76cql)f6hLNJA zbFeOu!ErDa|1}z4;>4&ozzPu9wjWQ^KGxmr+p&Qr4>&5xT!CqO7?*4qu23Ph&QBcS zR-i;zq1a3RnJq)HUtos}Iv`%7?j2nlZ(Xq&7Q;zo(RAwlTlUvmAbPGx(vg;)R&CF( zxa@E(9KKlDNVbrPi#LhIIaP%_eIw@#h zw)vQ6-zxsHyg<$}v2Nlk(&>hHaJ;wK}fp$OA+2{}`8Y8^;$pdAgwqI33w2+lcpgck@<^F#W z7TyI#SNHw(Y6yAgELJn^A(l8rg6789ub|DN=Rk{l5yYh?M49CmVNz)03Sl$qv-W0i z(g@L!!^A0CBZU?O(78}43zu*l*7f4S54j}+L9w=OoRDciobiguN8cp;bbwF~yXxKt zh24a{+x~L9MA~CGHJ-);G@Gy2m3m%TBDOTTs=}DFnl;KkoX17j?Mw{CYL!5?kYmz$ z0V|SeD}TOXM}Y_eHzO}(v9)%S2;-<;3F+F~qa3aAEwvoDh|jvfKM}a(h(_Pxt|n5y z)thAg@<;&SP!HD0jg5-4pxO99DsddMxII@DqCl?0mN_tJ@v|zl9%mF|&fTpy`eyq} ze5dZ+zm0^YMmf?segw~@hi1UF748qw{garKig#1&WzVwbI_X+SMO@@SVdt8TMppvpbQUmR);{ns!wjOCw(F|D681Yr8$o%T5^RI=cJx^Go`pXY=#zXmmbh z3VjSVzMgz`0Q>hXCn5p&vA`{rrY32zFdJAZ9LLD{*vy1hN}26jAA6c11V!1WmF$O+DfH|&|DR9fv>F%zx(X#VZ?Nc5$Eq|6)fw3 zQ5GaYIC(^GDrVNh7ngnyO_M0{0xN(yi9tG_AEZLW z$RMjgep*Yq#JQf#Oad?o{CiGXP-T=QzI+;11+*Q5VPJe7y-XU$m49Fh6~>be7_~i^ zvxV0RH_PdF{z8^8Vj=gwqh)vmubTtFKJ_5XUf*lnifAc{yz}MlqH5tfqw|Bq0!85} z%i?jTi+}u!SV(<%++qWYxSc9Z+$`DeP#Kc{nl@S|AoEm8;xWLB@d*J;mQZ~ zVVc_`B)&$*DOjB$gI; zP&H*-G=jkA)-mNEugs-C%(X2iK(k8zQV?Ec((kbd#=#D+qXh-FA z8=Bssygn>_CB7<~m~^cM;mdAGSQUl4!dT168`yRD38_9`zmdRs!e?U_eHS}Th6;a zWxsiej$qK^0%I~ft86gjN%GZWh!_PrcQ_`8J-!^#n|uiM=xeg*QKx2uYX2^5?{evz zV`n0hMI+TZa82%}{RL)=eafGa#5&Duc`d>A#zA}qeRi#Y8J`}xUib0>JHF+$llzH) zYCwVG9pXGOZ0?s*O!Y4}O+kpVmnc_xVopX{6-#=V367@Re7(&Gb-48Egyzbh3F-|R z`DPN@qj?l^hd)cvb>W~k&|S$}OA+%6zz1!rip7k5S-bQxDn&BgqGHf|zdmkSEtx1nL5`*lU z3^G@jTydE$!w7%$>1}*@1}>^-=RoL-A$vabmp`;lfOj+b!B~PtjOKpOXeomrcO(lv zi<7%RLhYuWVdGd|V%5aPmFim_(H~Ek468SQ#N^0tadHuI%)y{Ep2hiDzC|xH_i0QLnG+o73!>$1+Q& z!YDX_$VlKQy(_68a5N{N21Rm3E;MGzxpy}2ff;fZ-mD)y|9_jEvn3;diIa&n(!?yt zshfp2LKUm=UUgF1|CNz#%dsa4ceXh|{G^pnwzw>CZ3b&#|FXR?z_Aa3m)bcz6}A^i zYPkyrGl(b8oYdYz28?hdDrK2kS6AbH>CIaLIyaqU`rK^bWhwr_T5h|>tnCqP zT%e(S&KWmtRrF3bJ~}3S8z<1M7G$^wRwR?UxC-0!Z&QsJmmL7d?09;f7Mg0V1E8X+ zuJrlE?6j5UVxm8o%$bEpVAuEFiW?7^HWQkaiw`mnCXty2ZN{`Zr_uu)F1JMaUihfh zor=cmFV@~3XX!X%jlA7BMlCH=$$h<&7V`&naHEdh_wzghTEQVGak^8ggV8E63glPM z;VHng>%bXhDUg6b6s3{UWYl|P(P?^fiI#V=6jk|nUn-P)^To3J;TwCVD1Xp(?lDcq zEo-S+-xO0a_r$65=;+rt3%~j2qccb_7H+jRx^?Xy<|H6k`6K-JU%S1IPFAoDA=v?`;+cBdb|)GC-I4y|(0hPu-ehz2|V!SQ*9U zDjwR014#iGPi-sF)x?#7&mB*z1KG!m24-$1*-c_Z}*xsWiifFNExiIeGv1OxDBhs*0#^!8Ig6Za!9^*P(Q} z6MA9HmLa6;`Dqr*Ce10lC{6`jM^%$0ua`6T*Nh>C`Lm=93BlNaXQglm!_blF{{Gi{ zpjUw7y-hcs5Xa}oQ@_j(!j1{uv`vyWr@fd=0fb?gi0X1d(6j-!P_sLG0@3ZC=2O-s z4Nk}xVz&RB27thnF<}@UaGw+y5g0a#dMA|xh04KiRBL&R+w^YeR-kHAgyI5~6fUrl zRMt^ynAQ#c6g?3b5*&?F{SJ~c#Y1Aj9uxsG=1c*qakkbJgPoKl5g2}$$zh(W?a`D) z5g0XqW5vki^Q`j42G_uQ{5!pkdQ2%tsMn#F1QLs5^7wFiJR)|=BFRX=Abx`e`Ny@8 zPYhDB!Q0|NrhqP_Of;J%(N)Js{$%*d;GZu2cFP4(ctdfP8sLycEeW&U(ou?w8!MWd{V^5kBbi%u#vYbb=ljowlQ6OUB|2An)014cA;a-O!wQz zNXZ!Do82pueH@2_$|g7W;Zgg^r<_kz98Ryj;^q@hc|zx;KH;<93n(J?$aLabkQ!jU zh4fxrv!+G&x*NEiAcdIF3eG#&`ojhkK3!FZ@%ShHH^y!92K7zDm(@UCZF}!)MD17> zb*NG57bWin3eCe~4TqlBA<}pU14(*>_ts@AosJM1BCvvu1w#%{81P^2Hh zG-aMsUn;&tfhJ@rm~3HNlen2kwou7+nc|ORHznJ4n2J;w87os? z1^+UzYB$KeMf|z;0tsY}kR~@5q`KYyWh4`EHj|Fqy|lz4m(yjv$mO?<1J5>Gp@pr& zI==6}fJBF4%Oz5%0S6mW%#o1mLgRFtL8pZb74_aD9k9Kguh>e87labJ?LM?D^62ZH zZJlx97X{kup6aET>4+&nN{X&-TZ!W?s`k|6$_07#9k+^%T6|hbTP-WSO@g|18Hbue z)>p~{JZCg=9;&*zlgvbfe0Rl-yE63?Ub~I%$n_A2_7=DPc{dScv;+Jm3w{CXct-lj zUzzRuR|cwDAoC{{EfSfedDl`r^L&|Tv}u1!Qv5{Sgu1AHT*Y`mwD2Dcw*^imV-q*f zUHb`@DG0ql)T=4j*KS>xer(QvyaRCShPxNY*~UH>gwKcY4sMZp3sr2c_@-9dt**&= z22S^vi58Q9^jNS%_%6t<82XMGJ_+=*<6vtxhb2a*<9V$U)UYVm%Ajzr4U0prsneTW z2B&v0j3=^rJrBq>>}Z-DtuPFGiY{^#PV`)EMizCxxAJ!Qy792tRu0pm1^W#ey!zku zvQ@!*5-$0ym?Z4|>J>2wG-@{=Pe00#Wvq1ddcWB)Ec<}_1~cT#J$SSnyymhyU;6F& z*JgJD(!oK>YbEd`@bS0-3=6&YGV$nC(phsb?z)R>6ahj+Fk}Q>yglP+y98SMVcb~T z$n<^_mE1@Cy@jlVdBG(~Jmeto2qVon5Je|wJKjnu%9eJUvaze;Q=bdlZz$6>D*RJm z-LufrG}ATmDc*)kjwWxIV0@)a>doA;fqwKpguiv0RnAA96{Wv`q5US@tW;<+z#0402%)sDg@CjZ`)>vTK>CHD5$FezJ`GNW4U ztya3)wOVQep$(kgDm=IQSDqbiM{jR=IKTO-lGD+}0r_c!NK3?~DHyNw1SflajUjkr zIeM0OC;1DPg|E-io18e-%4m@s+y~ZHO|=g-c@MdVHDjlRRD3`dQy3-LG(@y6K?GX3 zM2#t#wir&C<<_LkwA_N+@SbG)CPMnRgj?nuP1#OC(!sPn4@oUn%jn%YW`6$u^wt_r zw1`dG=2(+5dKT-{5oF(_;>8k~vpaKs2+f$lU+ut%_yrcHp7}^{>chT$(nvxd+fn#m zLX2{dt$nq(Sp(qy&Hk?TBm_O%>k8jx1(EUn7WUa_+{4M`;8Taw)bg5qwkJDq6^~=l zr&YL?yjE&|r6Dp>##+b03F$9M z(4H`Rta+oFX$eL_k4B2)e2ju0G9^EZXxRpM6cjjLU$KRDZf_G+ze4xp%2s6?2~@3@ z9m2}aFp!N57w%kqY+XEVALOXbi{Av_3vPeMRk&usWPUFDk z<|+8ct>Q;ueR9Xe3LfjiK{SrfeQnP4gMea=Q2CBr_fwa}WasATDQU{$VCu#HM)t~U z{5euLxox)75g7qnGvKT8?h%S%8>@-H}|r?4Hs zzu-eaLrM_{zdoY=V?AG*MoXG=9yMH3OzN|R>MicHo+E2IgV7X^ZC6|zJ!jwCI59FY zecBovRw1b_$7HU)QaymGc_dWpgU{K0U4-860Rwp!8F3FyT@asm zJkn_gKn$!!Yb+kv6j|5wjj+#j1ov#x7;7rA%1AIHM>ZmjGEj_DFeDNeSC+hIy0&lL zlbB^PjJgbZ{gMwytU$T7D8h8pyj|dC#;N{M><8z`EL2dCP25<5&v>@F(J|P^-S_ZU zcsgi;l2earT+}KVK!f;;_BC5sgPt3;u53JD(TC{ps6}sDN>Bk3+A4X&uEU% z!$o2O?Co30#8y2zbUSr$qbBx@|H{KoCwcd#~fHIciw zM658^jeR(tJWG+C$TA|5-XrVM>Djap|K_)JPDn(6J?#N)S1%Vgg@`FjCo#k>4z!#@?_z2#@!eTdGGZ}h*_0?sGo)RNuT1z^(f zCmfc3!Slm8)3mQTuDSedc^;E7-DX6wTq}Yj27Ai>vY9fb>Vu&FudCxSGdMy#MA@)0 zT1So;sEf;m`h~-{=;|M&DN@tk!XreHZQ%U%;BW;$kXUFNK{}llxYe2tNt4CR94(Dz z*D&9RB<~c_S#IrmtF)(svhym5qJV*O^q)pr`&14UNZV&ldEaS^RW~z^H|8GHT3Qrw zee7Qt$(Ibz)%IzVSTb1ie~1W7c!)OckMW3JLS0-0o}H?+%R=HAq_`mUcFh(|rtXKG zILKo2s_OxUcW2!YCST~P@`v~*8N~BpPEMQMJr%hxN?{k?33yLRoUf7<_koN}MQEM_ zck^_rWDG51ioKwCbai?ZP85f{k-jYWBui7fHt0`n-|t@jnj%{d-JP`zhgm0(`q7{38Am?Wu*)Dp}Hrkdjjx0k?r z*$>(~uMQV^B+O4!I}BxYL512Q))kvHr~Vr#CA6=f(DwGRM4a*$+-m6Q0ah*$y8i{( zUN}dxPkW(({pAS~3$=dxqtoa=7Mdt&_jmu&8+-T1Q#N%A6x54lJ%cOT6n!NaAp)GT zVl94A#wyuxm8x!ID3Es5!j`^?rA)@ds$@#D5{xLSr|mxNuY_$e;gR2W*-CGtDTvB2 z^5EZ7w3K1Yz%5cbm0>XXAN>6L5N<2z8V=x%E27GS5ZgzoPkXCq;g4!25Bwh66*zPpB|rbE3!7U* zV46+Lk)jHM0l?K$=0GqM;NvMzAQ&E|gb-#9j(4Q4-w4KVCnF$F%#W_Rc8N%%a@1f< zX>%%uM$HJ0^Mw%MLycXWv__p2TNM}yAinel+qu-w#~U;$Mk}|dA-9PAXz(6BJE&+) z*T|xq1?a5UUU3(LE5#bGz-$^!Tai-cH)Q5R4Qp070dC zF;X|DR1U&Of!^RLt6us+Lz|Es`YAGfNFufMlvqYfiQrURK+Wzj*wPag4`pFxBJVHa z^toF*cv{#WYBhh;3Amc@0_D)I)*NjPs_|k^8UGwWmy79Ejdj44b};>!X1F^M0$Q03 zNr2?D159bn_p1wwsFNE=t%a|Ft*Hk^G81}Zv9+=`>bmhdr$iYtYr!(&=sRq%PkO%N z-EnjjhkgHiGX$x7ceMfHB3w^EPNNJod%y8dwd<@>TO>MIcNg!8`h%YCtv_#V`&YUn zAV|7`IUc|sGym7ypS=Yf<$w}C|HS{rCNWuC$;J^0D4pp9*15E&kZKQGTUe`MY?9h@ zRVSr?xpt}OvC5(Oe}_R_$Zcljv8MCu?(@ed_xLUE_}J?r3L8`I*m){nFEi1v)#eI| zYS}qOzYyz3FE6fZo=o6g-%66w7cdWFuWN1i#W--2;M*00E_s5PIU_Cy;bz9_sht@^ zUwqn3A7k`9@DX#Y++?tc7l#Kk<&WeuRAUTJg<3|=9m7^%9nHg`emEuy{muH?3A(Pm zxC}GN-^!doGP9cdM2aP@p1|Lzt+H#~rIqp^Ftn3AhqHoZP@6fTHabX(w%MO`gN4&E zJM0P%d(+fS4z5=~tP!THEExUuh8hl1@C*0B299S5Fk;te*1Go9L_V5hVCt8^=VR_H zkIYD>X|09wZOp`oFIv~GQu7W{?{KKV!#4TTkMVMIH*t0xzR;Em$K<>!Z~Rjhy|zMg z@uuQbVT4axAU32hjB6VZ2qc-K@jhwf@r9Hz7f?Y(bHxS*hl$jkROn z+-4MKr&Q}Xt;K8A{_xF5Pefv~&(*;(OUt?^(1g$cKEHUtbo@rrQ@2vBYp~$pW9>K# zqCwK!VBlkP)fl^p4tc}%?(D`HZCbnDE@k@6bzbmCvX%pa$78Byl=CM%VVTteHCYV+ zPx%ycpL?&U4saK5*yFMphzUdzH?-@TpYHD8!_icEc$N+2yLcjgIf8*lm51F8830az zeR;n#@&#c7oI`eMVcI5y_aXi_gR~S}>0j$k6E~Nq@V!<3SnCZBWehyE`DwJ#q4J>} z_;^0V2GY$zb)6IOA#_GD#j0uTa8`65Z-aCU{#4yil9wH}JrrdWk)t@%C^=%r6v?45 z<@n`|43gqin!Jm%&EWR@>#M}%IoCbFyyI|U5wR^Y|3d3QGFcLfZe8p@n2^b2dMt|* z0uR_FY-H=w-ogxDj2Mi?{c|tF9h>F8{-Z-tg3G$Zvhy5NOXh-5cT>2to?97XH&37BDyCZ?lfSmk8hmqT6s( zheO*G6PtE|jY3C3*B-^G2_I;F$lI9Yz+v={q1CEdjurg~DEWS%^NNd4F4t$cwkEDJ zUout=LLZHSWBG2ZV3WciVYv37S%3O)jM=aG(-@iW!EExVgea+O@py(K+#g{1;uhfNwxqM3hT@%_ZWTTdP`6_4GbZ4?02eiyaDt?h zMY^)g&Xh_@V!V;7M*bC)iq2yZ$pIUd_)y65Z3Vu=OxZ9C+G?cnrUSy#*2ant(^KLE ze-RY;dH&ghSac8Gg7Rd_B@N~F(wufhL4&vVUx4LQE;d}_*O2}U)dgx)m1tE_|M3A} z=q(k!o{Ee?Yuub9EcF9@>{J3>oX=JNbY^GC$-jML{rGS_4Ix}kT0hD@Ytf{*3GXHJC2S#{1A7>Xlrygx zGUgnurx4e~B|87vWe6~Pp9zRYI_oKJpjfj$nOt0<))_)Gx4TBomm(=$yP=scvW$xF zAILx2sbEx}{LNtS0gwCcFg<(0_>*zUzVQ|t8|m@pv7*s)P;!pXe7tWhS}*8zjVr%b zfYK!t{hEEdb?AOsr6mHPU{r$UqYZPL=WKhTdi%!hs(I_+3-(c$s?MMXsHFJ7>yfK4m=O!VW}rm|)Y@#a${% zx_ZY#%iFbCbf4X61zT6H-!>Wic?H#GB7?re&r%>xlp90%cJ2?N2iLVG<<8sSc{Vb< z46~&_MU!#hbOADW%!)5PDs|oVA}o?7_@2)ee9LggQJx5Er^5qiB@|&Z+3Mn_G9Y3@q>v8(e zHJD&xxeqR<*(Ph3xpw2EC4XC?pyT%VfEdNLqIh?^G`;b$W(nCCeY+fb6jv(f!#PB8>uk0a3gIKWD=Os{gs*>bsw zL%$w*D-t){8kv-t@;oC5aa*Y+z(*`Oy^iI-2C<9`c-Roljs9|wUsZ7*8(rYkMq0AT zb^FDQnF%zwSK5+18{#ADMbbFlMk=t;Qf4w;7)l7TvhEhu?(!_+=JPK$PyDKI$~s9X zeZH=O`7=k7NOOpPQl%NFw418C0(;oTg8zmOvlSg5P)L#GxrV zR%yQB4+Ayj5RBr+8{{mpvPL(%w4axqkAU-Mh;l4m^xqa`=uOclmB4690DM2Of!e! zfCM_n8{Ug$)?5-#qk!CBLm?y^Oqq3Wec`_-f*w|3!J8@taeeUv1 z_5rBeQrD;MH)cL}F!N=;=Sbm(7Wu*_eHGZuGflvmzfNGXXMhu-9mDYZjZE4$`)xXm zGDU;8kXNOqdW>Ft&oHt~QfN?Ab3bvYpiDR$+^q#7wA8tx3L=TcrEjTR{tUuqKU0b} zZbr@$VEwiD?tgbbfH{7w)=%j1q0wD z%g=Ow--iB_&SeXD2crlPgw_t>I}MLBD45l6YR%009z$9FEbJ5J<*gu_KV`^mCNjl7G#qzA&Mk0f6Y7!;XUM4 z{uK9M#k#=7NuL;UQ2)aR@k_&HIXZB%I*ZM&Wu50pvNME%d?H)Z@CPM#`!5Hx=~5wK z9*RxyIIrt&V&qjiQZ9YEykI+#XAO(x&u^rUn9lRftOqUrGaYVoC)322-A^j}@ecjV z!D=rLjH+#;w=6r#*N~jK;~U=zxpul5MsJN`n*MPbCaSW61n#_V+Wx)J8yx^5`O<8J z3SU-V-!oDO^w(pZzC*oV33+#0bT;oVTWEY)$ws3o$-xjC4xK z(PEgL^Ke6$MZDy~chj3ik2(yiNK3`RSR%#ZyLKh!ggAigLsFcK^3U@&s zKOgS9((;M^`60b|Wh%@JJ&pV?-<=z6Y~pE0u`DvGhuf_89%6}Pgoot#~J%!EzE7h``7=!7_N zXL>B5E=vh$n#QWX&zh7zU)7{kD7^b#h-@4VSbF|YP;JUpC z{4CS818h#`$6drC*V2WpL3TG(8T)DRh~JSSOA0_Eauei?1aQFBl~aB_tD>h>*7Cig ze4)lS?UT5@n<1QJuJ@N)jtL$LC`e)%(!IWujKxP(JoI}UiQ3GY{>7RGDxbJRs|Z{@ zoE9<^A!|Y|`}z?S@Xw zH)y=Fz4beWzCobbm0C*2!^7*qS`cc=%1QV_E$VRxHTBE#0 zv<=JgvI8MgZpHqgU-@lJ_N~|)gj^$e*dvfLcIbLC19^baxbns^mWYQT6yIeCHx>=e z;h>Dg&)9}}!pTn0?>~E7R&I7j=;2yOuWxUtb@lDLyHlycQ4X0*b1pl079tv*E{B@Z zOP^3mX}Uc%ckJ+{nr*OTb>VqKD!FfWGB$?QdLCs8t92)Ze+Z&oQ18|Z>e&w&Tu5o~ozF7Bt~KV%=oDZo z*E!v;AiX!{>~wZgf4nmtrjlZsUQ&U7(E9eMPSKKzv46<8Lq0nQ2_8MZ<+MxbyE91v zJO$(iG$|;s5ZE~tJQ-tGYn3|;3n?nymR+)auqGrEv*M>17jMVppT*GJ42+*rv0=Sc zkCB33?5@qU@7tzxB#g>k1d~f?A%m-el3eGo ze9E9MQO|NMODosN=01W7jSGeSrqfNQ5Qwwtd64!yNQ~zv4Xn9*Vr}5VES(-s0`gqi zFFCEp_~(Jlqp&Pc1k3I76yJCVd&j5JKtBnM1HuS zy!7-J6s?>#S(x@vP&Wh+T#}OM31^>P?m6Aw3%3h(=}vk3Pv|^97|fc}w=Q&(uJv}I zYm15fyi5o{yl!|sh}*yFJD;41emQ3l8VM;{F9&jmdpuq>50wf)y5?oDcK4M>Vv3gz zwwHrXU2pHv-Yw+AesoWRkcsq7eOEwCR*1*73eD#sg*~naa@K7!6Xmb-UxU6znMC2l z=n30J_G?$~4yTD%=mT8l&S4z#)-&YqS1dTClYAf?=Ib08Q-~2G zf<9kKN|5ZDQCTpP9hlJMwVfIMnh783JV!NZfLAr!InI-Toic$sV$i?-R_r%|0&Omc zrCGDPBX#iN3PvYdELu(|vdtI6^q8&Z3Vf$#Q(&v5a%8-H6J8aso&HHRSUHhVSq3FR zn1>NAx{yW>pY+^2HrW7Q%S@RSfI~p`>2_+`@K0jyPPm;5hv7g@!5{ewEw^~)DctpL z7b5la7dY(+{!R9c=wh>3=MK2r?WTj0qDs+Oe~Jd5&qGe<0FMz4Z#Ms0_1bsDM*svl z?(dqLrhP+Ao1vQ-MojTSmmi-dOJ?04_Q#1Zi*0`a!j1`Fe}ZqDvqEkumOOijUNl|9 zO19BwQRzV;w7c;Iye%b$%I=LrWxFT+%eK;69R0{_bEM6Ke`vLjtSMs_C2IuVMA8go z)b~>X`g`&c&iC3_J+k1?h-mF`e_+6KvbZW&-8=W(C!s#u`sSg0|H5;^UQj^e-yBju z=TWl!pZRR%82J05j{J!0O*HFp;u26252n{$Lm?&mXwW{#d0i0EKZ`zednvS-2dro8 z(35}Np7!@N-M%(_6eir?!a(Rjb6!+28O8N9mg&tK8#k~0PO3@Nij|MoqkzSLtv2}7y#GuNl^x=!OhW_RRJkf5DDdazZEnH9``0zSboMk+OV1HyvOH*(rctDG zV=;I406`$k$5XK#-yvlNtgrJO=ZJqMsIhwiI{!6n(RPACcrT>08ij~>eUcZAx{vW) zZBV`7x6i&3-4kOienk_os`uwi6J;kGyKz$5C;#z@+R}d=TB+f^$5>Q*M@cEMkA010 zqmydp zQm4GZMkFqTf-vFgCdv&?W?Km4?e~340{<{dMaN~N`7a%Hh5K`W?NyiRKM`xvH>QOz z6&yxnRD)3|Ymf{76!q%W9kXzFn2-H*(Zgp(eFr%{f0mcM!NrMv+~>pd!ZNRwKF8vy z9ve=}dX?Fsmn1}k!Xw*Zj2%u;&J*i@EMgJ`9uQ108yp5*T&r~n6W|w+oZ2Xo(v&U2 zqgAVK?e&D-U|9h061s{gql^54N#0;|V2OvYm$*!;(e#;ToWefd7GNd%jzJynbeFYL zTS00(7~r6uHb8__l8%;YLn|jn-_xxoYihKSfG} zy`Jm&R#>L!-LFhrxscyUDnWot)bvsyt5*2Ws_0ZCI2^#@V)L@ETp}X_d9#{u61dRA z(kQ*oBhiN4l7PSX5#^nWZ8%r_I`3;yKxP`-;sJq8oMt6CA^%>^nc@x)b)XUK4QI4w zL*KmlGvAJ?$rr@4i#C4ehkeCbky888^@3fCG~5D~_{31T*=Zj+!zmA%$hV|&Ayg)t zV8}RX5CP(9{o3l6ybdxOyE0IT>j95XOovT4Glj(r#sU63wh-=a2&^gjq{?Kvij=w?>CDDQ|p>!d=ezY+ZX~js4 zud$BCQRz;|Oxdaypfn*HeoNBDV(C3?I@ajoi7~LX39L&yqeE{0lf$)SnhZ(rC4~$i zw1v}2l$fujLT7J`?9=pxhuS2K!#&$+J=!c?eZg$;SEwd}r<$$&4`_3x528aw=DzXT zDPCuJktcVUY-@VrWYzUq)Occ>TQiPh1O7%+q(shX?TQgyOloE~(xfyo!PsAghjKG% zWnnE4yb&9w-NlpzD^L7H@-k^}?_F|0P0~~4dp3q_j$#n|nnP3j*7>{>WD z0Od>394iTHTQ_pu?n3VgwpY%3RM8?|MYce}3QTO@`yHZP$A^ihZNY*~9t+Dh7vz<3 zMAL|FA?z0s%R#E`1@WzZ?D@W(h^nP`V!G0YlVh`HDEh} zy|?aD@2;scA7-k1x@&r$eb!!Qt%vFwlO?Xd#nE-!wk!6FrjX2%8Z!Cy?hDTO0zRSL z)!wt^(zb67qqplF9E$5-ENjm4I0%kkJD(QUFMi|T%o#x`V^?1LNNlc`5`L=kB|+^i z+KZLujBCIZ6%^woK66}&X19~i;o|H6DA{zl5Vu`~@>v2H`aI_$Wc+Rmb%JQElQroH z!!7a2r0HPz_5$0S8fWi#c_y*H<$8^!x;%C-Wp3wZcp!`(oM>NYHs($&UVaaUrXooQn!ags&y|Vq92&PrTqdFQG(YY>CSTe!~#t+BN?)3WO=g{>R zon-?TZr($nq|Wj4>iN;Gm95@-s$iMWneX`5-hF+qf%$n#)|-g!p>Uja@}u82Ouubi zt(%syT)fWTSafcm`{X1)i#<$WdSydPGTNF3RvoukzU;uZEv4?VD73Y<2IMdelC!HoRp5c%0R-)tN9btle_Ay0&(Pi>WFZvM^@A!e1 zx|Sju;nd-pH}F>*H18s&NIgmBeU#3Ok~-}vY(~71@H@o2*AKz?8vN98QuB=msN;(cnP%W|XWb^QVzM5- zB3P4Fs#UPi;3KX%_}w|xq*jE8s?u~;|KOBK^M&!t6d#}X!ty}F+$v0dIYJAKGNTx} zm%VK2@5Np!DiJ|p?gk|#J#DBgqi0wZRs3V-0m zQoZo>+S}evnFW{;?te6MO~+XCd@E|scYYW8#xt%|SY93`NM_0aUtH6a6$XXOi(lR& z6{Yg*U?X4?dWT#IbRg4&<<&a@`)%aT(-S}F-ZI$_`(&kdQMaV!oio^(?6fo&N}L#e{+a53wg;ihh{o>fG@y|qV~tm;+j42{NYYgB*V52< zcC7>fXJ-M7K0)4xHf}`01qF8gnVAzn4 zr@*%XGzEJif>qM_80RNcc*xS%;NI{O=F%mnD#)VQcMiMV-7lW!#asq8Hr9|FkT`n? zj*hwY!Jb^G)y#cqfB{4AhRrG_Q9d90c%E+4571|+<*CaFpP(Gk<}J6^ox81YvkgL^ zKuu2o80VWxI;nsTTwn;`Q;5@>4fbz!{@ zijBI%!%KHAF8n4tpCZx`)_pFCmVGvc`zebRkA9PF{13ckjo4!ABbPdfMCtGXW$1~;yP$3RDjOf~LEjTq64jhRp z-K50wdM*y!wt%` z@Uuw8*FJm3(bVkm)krfu^&cJsBT{NnXhg1Rmfc^>4`@AVTVx?$xj-}95x$Bb@Vpns z8fsu$T*@y9eSibHXly{fb;nysd_I`@91ndUoMct!Q3xz;C?J}JSZ^c1Z8&?@oeE$wffqO#0_gNzKw6g5MH zs!|Osdw4+UmP!Z{OTb-}XM13$;<&$K>Tev$E2vXG%B1UTEaSA@Sci!`WYBXy)G%h( z861Qw)Q;dw3&^ozE*JH?03uoK^?WE;eJhpPcm!$9-e`dGd`8DRea` z&0A;~AlG3;^wE{wj{JrD5Kc=38o()M}WO$q@Mys`KG zpH*N@D@rAy0PM;&<;vuox?6lwllhqxu`EQOpcZG7y3^W<_Sya zXmR$^)#1;Jeh<-#v$v#DFa~t>?^61>A~~5M(J$gVu~s`C$~sL%T!y%b5Hn`n)mxqD z1`jG7((uNmL>OL48PydJT2%M9VCSNmf2756EcpiiE%aO4aGS0j@G4<$NN$8|HnA6a zxH{r-wT2r%^VFRvQ3txLLSWT$a$gFul&Q7JHe0`at1bL2N&BcU3Esd`VHVu(61>NK z4fqV0U$U1gU31$Gj6&uUDUhR7s+V8avzYeh`{w-E@VRu6!Y=Xgu)evW-n=YH&tKB` zgb!AP%0C!q5ID^P6^o|)r=VC0!m!sbzO)%|Se&pH^5*h87Dl{(;4=or*V#^WKkV%Y z8;o6K-FisJ06X(K2W1z(>384sD|pdOsICGlFRgQd+ksFH)@-*vl0Ti^!zXT&j13F! zA~?eIvo9$9cz1{Vm5B+f&g%Nv4HrAd%)hr@%!VtF8;kqFO8ISgfS(v2U3i#}9ZkP?eGwBjIBi}Iy*T=M+dVKH z8jh!hj}ZqSJ%8XjV5pz$2{t|}!1Xy1fTv{mQZltfWm$S2AF5ZSs-i=+$aN|;)t1r&frwi;T$b#ah*K+&&r z+U=$$UkR1`4A!{p$<(%Cc|yP)WfNlk8J?d~BmZW98$nq7-hX)`Oru!dxephLvcTQ+ zIm<6WrdbE8AcPCiq>k?#Kl#YFW(|Ol6qN7pG8TF6 zOB#Xhxx9}V%97;-58TywT=cyzBOeQ$Swfqb%XUXa?bpz~B#AwEabimUJU@So+!dEU z$*8NYE<_3K-WIXeZnbazX$An3eAENaLuEHj z)8y0SX`e2zV^eyPmZysu8Y-v8j#Pic6wl9e79j`3P499oogFMicUS}DOejts2Y2V7=CyPNqWZ&4t`Y2QjJP-!1hQ|-| zwMiy1LO1Q9$x0LG(DHL3CAq~Kjt=peLKISx`@EMIUvhh_@($BC+NIlo#}0iwP>U|& z>GKi{LwPr)*#4DK>WUWJ+U)09cVljR?d~SfA}VK&n-OF>9)pL9>-jru+yL{SM%vZX z6Z6S0r;$iqCy&)DD4_-pM>yggyONWoOW4~1Ap^5N>6ndLwgv|q(7`o6V8-ke2#QHN z`SD$L`%Eb#hY&vE?DiQj{;|GeH>Knx9mnwzMUdlks`Cn{e7#yO0 z@p@~tif^o$hiO8)LtVum zE!?{9^tyU`ha2KOd2<9$*7MD6l5c$Igi%+pdev5qxcPDM^Gb&oAn#VQJ#5#}GyJqB zhapbe|A)vPCCl2D<uDr?5M$??0It!kQX0BeBvEHXNf>Jb9RHNk1yUZQ^%KtfwNd8IgtH)`uJ?R< z^8fNq_&1(Qv)3*>^a#|i*`%ZuU)v6AY(OHcxbFX zP8@ZMvFkXwV)2$}acSfRxQWdJxFw~M2$xrQ+g>T{FL$a+fPEV^PLN4HBEKfiUS;~P zrUUe|ijsR453kOSz~9P>|6dE&8lYNvvGlE zfi<4o+W>6*7Oja87KPAWLleMl^7)znlAAs9O~wSz0A)w#)4OdlTp`*bUytLNf#hAd z0+j*U^M}1Cptrm7`s=SPiWzaz<~)Xy(=SX+uH5@bG(={9Pf^;wy`=yA`K4zs+=Ws#6x z4rP~*(Y|Iwy%Z^`(lv*Aw}{#$oY)V$ItklHRT48inLypAzUE>|!a<#W==~}>5gKo; zzV3pW#wqjT8qV9F6j2;gb01a%zivj)Y!kQCFF#_e^?io_GPZowOq$M2FhwE#R!2{dO%8LGBXv>#U{Nt;w|O1f6>PI#exEcC`(!bnaR2a9 zW9gF_D5m#x`Q7H%)K5f^ROt$}DFcB06-0O^9}2-c9ugq_^~2LKqiZ+sRqwdQaRNIQ zb4=2e!7~gy410?JzB}CHVyO21F*XkdC%V~GKA}feV5M#{^w3^`i9O9MD=&@t*8?I` z5c1<6Y4NFAj+#NILO7UBE}LWyBW>seCN)>v$xOjoMrJ&wtf^Diy&R1Tgip*2w|Q1b z{QE>dkE#D;>eaQhiP`tr8oWLPJwGFRub=-`*T)P-rt`h1dZUF3K7VRrh=Nsy0>-mm z#$F$pU&F^2xa?Yg)h+8Tc}#Wl6F&YJg@S*xw*N@ zhp{0Mv>~EeM~V?Li7{0%wRChCrBZd=k2XE+E_d2{x{aQ`9KJ1H{s)a2r+lv$J&OEd zl+9b*lD&@3&uryca8FZ;s*a<61<1N zlhZ)b&AQlQnAw7NyP|;E&EuN0&t}_v)JPw~zAu)EQJeKPVY%_^KwtUlZ~gc{jgw7@ zLzy5#_bTis*!Kh#PBp-{73=#0pZsnLL&nOgv6S_hW&88#2Y?m#(IFia^FY%Vwl8-q=G%0bn2F$mJ$LUyL@xPGvXj&-S_QSM)SI*X>R;pyo4L3 zl@NsarUka1unPG;>lPf$(H7(vh`E!Rj9cL@ z3V-x#==)a5QF5tcR>BnAgj32eXAQF_%6%s5s%CES2aB0O%Is{Aj4BRwvsSW;dwnD(Ncc^yA1#)W~z;L{l}N^xP+88k%wGofj5IpQM^>s>PqXP+)Qr- z^t`Wiz<-*qI*C&|HA}x*&g9pZKfidxPYIJqD8Qk$kxb-qL+JW!2Y4h?F^el{Zw2AV z9=?YZJ;1x*k!C~FWiIXf2F9Hv#o%P{Yd&==pYnM}2p;jbyS)*MNMy(RZ%)15HQYmF zNQ)wl5m=i$?}K_u7EM%T%oeeO>ipsX+Et=s3hFpXzS2Oos=gmL7c{)y=r%nuK9tTI3Y;|EMqd}cNGxE z5EvhH=-JK4Tbe!clXRpMh2N_>6Y=1|D#-B!5nRJ|(~@I}#pCQ}0t&9pb#a=%;__1RmX9 zW(8josTUP~S-bY3rCjtG;*ZO3LU&x-OwjWXz?GPKi|pwn52VC8E&E`kf42JGak|9Y z$Mxk$x1k5La{KsPIZfSlzF`E*f>3qS< z`1-WlHQu~`%iJ-@GZ;4>rMvDljf#rjpo2JhYTMGeJbQ{x|5F}~ZAL`%1z&Ac8)@WK zDCuK7EC=xLTIaUrkO;b7dR0>mj{EBB#`Q5#H&;qCDEIH#L9Qcuy5D&Ss-#v+0b!l@K&>;%K^7L5g z4JLpt;!Fc`6$ws9zMj@wLY+0=$6R$Ufw8ssL>(;pMp!pHE5}XJ%wV)?}E)B`^DlWzN1WG-V!L+ z;t5#D^eUc%PSE1BMbU*5)+x!04HGPaW@HGQ(kr;L&TN7+Ih3}@KqV`so<})6kHGGg zmTgeF4rAMAky~|{Y=iN4!d3?TA{(T9&D?eR>AlxqyK&*ut+ zG*B;lOO&6ut1G+WS)zkJh|a z{P2eikUP(+jDcM5=#**P%}xn4jaP^tWg(emAKAH~gNU(M6uO)pL2knTG6 zD^m<4E?hQGv4}^r?FK#CGTbF3=lE~};|Cy*Q`lS6gJkaxEl7h@u%WUwh? z-y>+}NJ^k{*!4wLx$Nm5J6N%ov6&J(>WL*0oLC*~q0;a;ckL(xh= z3-I*8u>y@p-!?1Vk$hUOZ2LjA4nKxo zPw2dY;uYC&4jRX*gmlw3z;;gVqfQ`WCVVCAHU%aV3mJ5LtL0Mf(PCt!;^xY3VsUl9 z(W6nXz@;ROnoSnFs$;w?X@-g9WuW?uYP(Bf{aOuL2J+sS%D5Cv`ixFnBl{$gAHfQNz(v}_Eb#`^Wz>J8q%6D= zO$0EENEOKl(DSz+V@c~6Q^iHn`zaj4VoOEU9(+eh18-wp9Q>3U>kJDk)D;$B#JJuv z^AZ-Wm3_}v{s}Zgq_wAQK!QTc_=$3h#iSLbdkp*3I;w~fZ(3C23Oo8PAw_OeQxX=v zTCLZ;BS2-*);gyJ3kxgh;fAOfLsBu=2P_CS!5|!ZDaNCo6G%fAjyS{GHgY~PijI@w zN5V>{qM=EReE(PA5V6I*c@kD?gBoevZbl(kq%l48?Xk4*78sa|h<}Vn9m=$Z))4aZ zo?eY$_-Sp1!$%QU;^^%Mg3oZ5#}RmGkjTzSq1zMi53ha&^V4vONE@Y_-UA!&MqwXm zBS=F*{MWFN9$4z2z64oKZLDfW)kSVlE zNvqKD)TxD+x1rc<70N|{X=6q((HD5?Sp`(6<&>1f3_09m9$7vaPREc8#u}S9homao z*!qibJ8qiiOl#=po(MI=(R#hk4@{9sqQ?z|NMVby8Iur@FbB2C0itH-)S)2reHLBe zcMA`v+Z0q`WMM1JPvw_kyEkN$kz|tj@tN5icjMu&@1#hjO~Ivf`AXwS8+jJXvb=~( zcaCaG7>Y4?`O~dGaEIqgRBLe)QNRyrvE7CFhh*j9_DI1)%@8run0k{0VdydhQ3gZ| zO<{PsG8x}lHQc3hAi`|oF_&k#!HzY`rz)O;F4S|nVR{q1FS*}#?Ta>DY)_|P+=^17 znaC^nfnJ#ytx$u9Wr!S=+0Z_F*PjVNCX)d6BP^>#T{qR`LE7(N`$C3DpfDa;iaOe6 zW<;w>YK}48f;0}lcIhXqU7MjJWVl!*A5pBSy|?a!OLun^I1$^C7jB9V0rz$;?tyjo z>!ZOpv6kTQE(E@vo8Dn zfFDJV>60Ky@7oDVw2Im7g&z|TZzD3GmRUD^B@C5>>1=?n;L`j&hi_EOITWoYK8j>m z@SH?Tx4ae$#K`i_qxFER$P*A~8KiNjPp3>=Lkbg+c%)&f&_2m{+p*N+`Vj^=%vtes z;Pd;Wb3`|!nrQBQ=*bEH*zsflek%2kcZ#Oq)0JU}z$UEdnW-OBV13u>Jkz{%U&(DlmA*QY!FmE(bYq zXv>v0SXvx!u}~G!1ev#xBE)S+h@+!RVpSuQVJ$?Yw-;E5ROnHLVJU%FEk-CjJO~WY zG5`CV62pe6;+9QQNq*6VHTorQSp`BUqeG*Om4LxgMGx$!6g3!eK5a}gO*vrPVF8p6 z%5&oD?l^20`_tilWw9s_@=2KDuz&uhG-G_$41ZCJ^DT#;P*PAnatPFdkjG-QTf-@` zu=~MBli6I$YYS_d`_s-_D+pQ;Q{}d`nmc2h48ho&p+0LuzvCm)-Z)Jn!H9Ku81Te5 zRtbGtnwPJ9yg`mjFMxD+26HLlkOHQD5L&f;Pz4qVWWnT6%uB4dZC*I)g?yQ_u>q`z0|3Z>agMgr`2q!~I6lf2^MKH4n1=zlKCBP48 zurY|2Je_4Z?LhzH6*Y89)!LZaQOlDPF2g0E*XmPRA(f*Q6#XJ=B4%NfQn;kYx6GC; zW;8-s&s0*q3FA#DDL^_;$14%W?06S{2Umn#k&~czKPUg*6=imer2+}Be~wB)ydND- z4&Op76BC&~DCA>uzOjj|62K^@uoP}Cnq#cMr<4Qe^p#VN23 zn%;`>P@*E=Ffm&Pz5(Xy$mKc6i6(jBFjO}-GduXCg9{2o)*BzMI4P=qjuCyLNS7$8&)iC2HpGOHO_jy0!` zX{@h7$DnNQkA$Fyf}^nl=^oYo1`QE$8`_J++a~WSYfdSR@$P5+9>CT>CyzI{h?i#2 z;3hUhw8zF8>{EiMdG~Q|AJ|;Q7ScKp&MKc8TCS^nolFUB2;#Qz>;Y4SON+(iHWdly zDTzxMSVwW;0ZThRPEx%2kxyn}6mP||X7idCl|ss#dzEx7o6~@EEO)Nml8WUueg*0K z_tJQ1|HRo=&xp0=FhS#Utd5yTGZRl7J&fJ;q(&M`$9X?Pk;Z;7^j4IY z<{gnY=(m(iEEQUmzE+_mwYL6p)s^VWYKm9wBBqo8E(|8!-sHAwv&$fDvsqP)ssus{?j;2XSTcSG3Y#R_S!6uT>jA$obmC$_Q+E z-+4x7$KTQu85Z8R9p`_7@1&eX`iGw5#Kh&@@g!6iy#*S(vg?XD7g@_kbG*I!0+|g>@EWo z=}@~M2fV0UGT$(0X^b~Pn;C!eJRr+`*?M$FcX(Rn&Fu`b;s3c-ILsG|=z_XrJRf3{ zZ4w58?;WF>M3go|kelWD;?^atU8*5IsMSw@^z76!#UnB(l@P)1ywgHHu=MHID;+lj z3=f`M{cugCUu>zYVdGlQS3gTVQc#S_FDWCV^$s~hDJ#~7(x!6OiK(#%JYeXt=FXmD z6D(3|{UO)6C7y{)O|M%|?nni*sz~Q#Vs7G~CT8Q^jZw4Ei=X5jw01EiEp|V=8}FtN|1V=)={G zyqTk2hQ=U>x3HQgaM)hn7--0u!Y?ODP@O3Tb5_Js&?bNbX&`+LJqF4mqu<$@rIa;} z%TPz|we!iK?+~Dlr+6hX{R1p!i`Xn2s}#%@mp(4{vBq4@@R zW1JSK@7xe7O?fCaLRF1MA3^##)%R?Op7RA z!nQ0D|FqU9)=vN{KJeyK{I;4R!ZfW-e63FQ==>~20rYQi2ru-)@C>z_t6o_e$hs_< zO2o*uZDZ%|nSvjR(yO+S2>WLPmXpu4r5gRF>w=4j`GE(gRWMd!Ps1qRv$p~Uabnyq zJxifDq(req<>@#+Ga4m0>?yxfw3(;r235I~CfZpg-Uh%L(O8s1(EplYnxbxlzp6>0 z{8CXP7nJIsUqbT6(f?aQGkSrB5v*l{^<{!ji4diPPkM=zHZsRP=sl|l>F*Z;|0ehA zg{n0?1y4E*3*;VbjiMS;8eb=r*$E=o%FDVNan1$56EFp5$Ft0DH97F9X$m;DScJh? zh0rj8Gzx%FAYkGJMDMuEmpg88|IKF`q$|WGC#}_s9jM<&C$1%DaWz*gU#VP%?_rfF9oWA!H8P5z zKy5Fdt%UR&HU%^UjshdpvzQY1xY=5jaCj)Og8++3iV)-aOYks_T*=jy5xK9_wme3a zQ1s0Wn^Skt+XAD9SC?t$gNrx01B2iwAzdSN0(bh8NI4crsy^XYL*RbI zkyT8RfKoj|?MgL-KufdRAaT219Cwix*@co;sj4Wyq(}2mb!97s?qfgP`_7Z;@UUoj z8X*1loo$>T9WB-`$AIV z93|ll$rmBBA9zG0D9TZx##YO%zaZ$Bm<5V&qX#VTqLN4~KtGsqP*1zNJE5nb&7H}wN`97%qWQ${ta7;qXbD5{KCiA7kjtWFd`%3&o^Py`CZ zER>bhvYp3m0;)kA-rRZ=G14L?WGXy~Vq#)Fo@Npw+MMQbaV=C#Gi%txcaA4CVIi@_ z#+?R{wB8&}3enoLq%;}q=5d~g@5;~+=o+8{3Wh$8Mj9xFlBm^GX<;OO7lOb-{}WG= z!tr8?{H3h48GN!!G=b(SO7jSSV{xEn+05OrwAR+oUW!t0Bi# z(pw2gY%eal<+33Ye<*b{r7rS(*cKr;mnw4x0>q3#08eIa4gLMQdqQ)}+ zIil#P_rV-DSR~;+y?Fz;|7*!RCrTy4LDoRM;jRs%^0L^%SqUbkK;}cNT3uLNcH8X^ z^rYdqDX_SyqT->F1!D@pz7xfXeb(R~ia{NkZZK4&fu2HW#*U!vEK(I@_iMaD+bKbt{`D&%xOf|C}=g zLl-4YhgDvWYgoJht;~RQ^F>UUx@Jj}g`)n=0JR=Ghf5LmamZP)k^)l~Zx52imta04 ztAeo&I_N2Dp_~6icMYq$C}WGrmPae=i>a8!8!0iVqCz)X>+_jv)42RvShsT2GDqgk zxq@Sc10qZod8-HfN!;72mN(E<7n+)_#|kCEdT-3=|Lk9`!z%S!N~QUgmf?V5(4=DG z+(!p%EOUM^BBlLG{-$IUBG43&6ODi&4WcXt+XWwl)(7C=XOUo$Rcv2Swf_F$jG|oP z{zLfw$xUrq+WJ+UzJlN1)>{5`3e2J?-JZ%OO}}Ofy}u4D%$D3AHu6O`OQH9N<plVWbH7Og!rMC|c)9S^7(?T`sg(ZYvBsNpVP>_I${r*u- zO`Ne3qC^Wuh^HBzMK=`gebxUeVu+Uq|0T4#1~v5<#S;TNE99@#(gGb^X=$(uS9L4# zHtbYkC}$8bCv6gsM$MUCZdCFf)#^i zqH@JT@#3+HF3}-{s6?Ji-DQc21>>9=KtFGzWHNjbP5t$JfrTv=cSH{VSoBHdD6Y>X zXV^KMv<`zBxkj;A17q<0*~{OFJH(OsA&OcZ_?UV|Q;!`Pez>O9SPheX~GH))qRMv8VWX=H^=SWhDS7?9^p zCP_zwXzW#TF*|nk#d45LR4Y8>NRQ`xa`IB&^m$5b!4E?>EnC6{nF+#y=32g$%5#4A zglP2+ag1~Z7PyEwsr`9-Zq3q4Twy&PYH+Q*dll7*^e~0=&}F(>VottTu|wjd8;G)F zhj-L5b)3op6xWANSBgQ6wbi^O1GFYw#S`uRg$q@oU^{B- zl#+_4j|-6Vt>;-t49}Q`rYtK;X;f|%zH`20i)=hWz!?otDd^ixx|PDD0gONhl3|!A z;z;r&#-TNde4|QaZ|oi2AH z2fh3kaPT5nG*k;E36u-(@aY_UG2$G!4zcMs=?k$K5l7kN#<94a ze+vj}i%JBEJ~fvf`YWALR8BBiBbN{6)c^GwVxfE?${JLmP$4PFTu^j0oUc=&hIj#4 zwa^z`%Y&Z{>1*rLK=Vp)tFsqwfdal8=IhD^R=Ne~k?k_-<8JC_==7`YU&)heYz2DR zLo&ySQsVg*ehn}SNHN7BV&Z*}>@%@6h>Hs7kqd6ElRZp0pBqw+W#S$cMz%#k`*{kw z#lld>7ZaP7{FQ+*A##Ie>>Wf~Wz-Js4GiNgQ^u7uOw$MhE}ju2G&PclM@V<8&(U{b z!(J245?Bf*7I;O=%xBm{abrHfo=_Be1y1~W^MTVSx6*!%z`9dkg4RH8<#`$??@z$O zc<<|sy$OQy%}0X!C+;S_vPS~II+DW;-%k3`jT})O9e-pgTsKvZeyo;J-+a){tRHL8 zuh;xcSPg8Ot-onwd;EtT@UkyLwgrbHEyfVyo1DCsNtes^d^pTX8jYO`CCX|()gmro z#QCFsQ@lZ45qlsa{2k`Z&tv!uQsttN{ZZ%`*CmPBSpgYQvbz`Q1c>{(B}Hki>xH_|8_p^& z4>-Le-GQr`;EuB3z%L(3%wyjUJ;Y&^wm8qM)3QoM$_WrjFso46_mBzQES8_JZho+2sCqp2u`5vCT?KHkgfkc6xa4DNu1$=8l(huGJgr5TjZz}bX&iF;hwp~Ce zcV%Kn!X&Vc?&qisHVAl3()`7{IVGYTtqkG`l`YOMVIJnhSHvWzg({(NpcLuzE5;`+ z=u0%Tgzy^WgqVgYmCi~4sakQ%=_`9y-?9d%Rg#>blmv`fF@N$@QgjnWNzq|oMP9xj zeH@Qi#aZGPhU^4k(SIyad)jNHrsV{y6~igcBpmI+g@hDW_z2*TOPe<$)bdeRs65rl zfb(OKj!4;7DI)1<@L~p{hXOcCvgN`HiTbc$i?FUeGPD{ba;$s+*Bzt@3%hobKDez$ zEBvX2==Y5)EVgAmSOafu%m&mLt37`cSG1Tt0samv>H$sthOPR3i!T#C72YWi_?3;$ z10O%SD8h#){HMxo`!>y0quxUuwV;w9p+b#5d^Z^*F*NM*dK%A*d+Zh?gO^9+eV&fS zJ?$WUR7?ZJynj>?bR9+r8PF%DHVRBv5!MLyGzl>Ri%sLWVX#*;WEc=ytu{YVtKw~7 z&{mB&=larPSjYJ5h8E8Y4@};BM?=v1Gg)NHbt2vK`7s)lhx#qCgP(i?IywZB1tKXb z6tSXr86#L}uo6OxW5JZB5Ieh~r`n2vcoY?mZY(Qz-}38E`X>}7zoq4g^29ocxbw*) z!lTJx7JD^zS0EZQ9KzBexd@Ouj5_(2HZ)T>fBg+lqZwE5OT6r8z1sZwd3by-X)GJF zCoWJDqNrATHB7D9;7I8`TQtqyvgqkGjGF^Vzcl$^``)|Yg#RO`^6ZnTgBXT;E?ew$ zKuc(2?u6EI%R;8PTuGQm%Le-^t8vLK^gMZo{$ov0jLcpv1L%FVl%bT0Jm&u@t%oz zVwc5st_aJohYq$bKuVLY=I@+0!SNtLC;Zl=MId?8_xOB%EV_mODZdF0nLlin^8qP! zkHsp=u@oYuda)c^p_HSVEneTH<18o7d+W-Ti23UkOS3b{x5eKIT=6*BeIgew?kZq_ z9oC9+EiAWewZXrdP{W2*+_NpVuck-*JvGe4L;fZi0g2r}F@-qgaB`aWq#W^inxYRm z7=vCom#m76sSIvGMVcj@S6AQ%RhKmaG+2ygvmHhm;%rD`vgz$o0Nlt2blpH_H$|d@ z$pb~Dk3VGRqsru5!E-Lmu;H}~w*wff=JlN0N5%_F6G3U_>fn&j;JDux!2A1htpZFG zYJ~E!>K+nu;fAf@^YS5wf>@TO*k54CW?k2!43(n_5Y7owE*YS|LY2WcgTCK>0f!i)USQ&cueVBZM3f6PwNqf|Iabt;Jz)uf&bk@ z{?3{E_HBmFQ>euC+jp(Mw>p5bO5=O)+Ye_`$el%RpKX%C{A;oNuYu1Bn)3e;FrlvG z1HhUU;5&?;xFu+J{~V@f)yG<~OMj5U{za$!-@oObH?zR(f0qGpxR|ZKwN4(d^*b?@ zC}FZ$J+Wu?Tcw*7|L1}x0es|#9kw5-n3E^tudxHdG5&?P{~zq0 zPV(QovE8#J_*!teuDqZ)J*fg2Za}Dar@`KzTMe?X_U$P$-q2Zoo-Bet%E7T zf3aPXSzy_>J|<#?zW_rp>TCUA943XX&OGTYpT9k_jF1s>I3CB45c z1H_#Vhm`3~{o^Y&9KF20rIQAui+@KR*Pp3e)Aij8&Gt&PnKx#snT%hFy(3PxYks(I ztW4J4THHFL=f(2aeMub^Jcp2FH=lU6ohx_lz%Rc5*UoF6GbLWGhz(1>7hKD|uP|=B zUsIl3Kp)B$mV*&}&TP5Va-KU`vNiAfAZpks=<_M8dGhCTaSWq`A`8h}Rv49Dmahn80&E!gfSjLu2QIyt9^$ai2X(p@02Tp~HG~$eb(9UN6 z;5t}>wy(?rZbP4}*U&Ht(>Q>~O*0;ci=sQATfiy$hStYz>74Lp+V2`${@p6oN+g3V{a(?DrmR$S7fWM`g^~WMBxLNqcb^4ZPuPsdz zn9Hi2SorDqt7vW5s?a?nQTNw5 z+6Fe#^aayoULGh4?fBQKPlNBT{vsCN15v%JW`qL*MS@eLd*Uvh@@;>V|L}Rp8)j`i zi3+}{R-ov&o1}ecIl9wLp?kXa-b&1J94qPEDhy7YTU-sh^?o9Mnj9Upy@Z0Ar0j|K zcNW^f+w3T-G8=h7d^MhFulrcFcQ)yjW%X$>2LK!Bcxh_e zc9J}6IVqB>Rw?LT6?{br&b)S0+taSvu`i92b`W2mNsa`zThvCy^PgO?nvMDC7 z)v7t^Bk?Qa&EIkdqS04p?5x+`g+F|{?@~K6?_HuE_xA`Lo+RB%UI^Cjk4n4@*Cf(k zqBL{Tk6#%G%WUsi^`CzC?${mR6TkW}1*bcIu6nteCTtMy&YFBc83YI&urGbSy{kG{ z`#Jr?@nvyh!>w%ZvXphwuH}?^edG1n6(#HbDAby0ebSvey@y&MePA-`*Z;@dTSrCN zMgOBJA|Rzw(jrQC=a7m>gLH$GboV?cDIH3eAYcGP=g{2((wzemLl46YGne=E{oZ@m zUB9*NAHRQof6TLHJ+Ys2_St8j^X$)#RCY4ztjwE_mzhq0UXoBbrY+Zt=+; z4lbpgAjw(>NJYexLPhmLtheZ?PTR~exW2^GvwJdM24fViL z*#7v5d)fan751z-8yh#~_M0ivZ5z1)ThxGeUmY@m1BQ>$Zd&~B1!)f(SBHZ3lkejN zIoa7t#{r5=hdHAkke-Ho{sdGx=cIKKJ8g62`mvxW|GiP0HFP6awoFW`R~aiEYW7=4 zHu4~E%w}ouDNnP*{lNVu^>nFL3z{vCax7Afek<+OvlrM~A{?#-j_yM?ZQEcJ5hecl z_tJ$%tY`Yw5wVF2CPvzPp1bd3hJal|99Ono1AvSMs*Y*R52jxDP}gIFsTZId!TYVd zCX`N?0E``sTFMPx7-rQ6$nYSigo92z&9nTfjW3j1ui_*P5EP!&#fCyad1Q}5F7DUiV)X^uT`!oXrg zt2>ld#zt$Y{F$p27Eud%CmE#RFrc2^pGTkTT~)_&V8wx=GSBG~7(=i?8jsHgz%XxP z;(g3Lya-bWI{JK?QSZhH3hFl-#_rXk|7gVopOBhdrFqZ7H=0kQk%F_UZOa|76~TlB zus>O0_nJmvsj)Yq5@Qetc6M8qWYNl*;SRS;>wbNA^I>P|!0c~T>nl1+U^H*26hkX^ zFf)nV>44bi%~ixmmTz~m)~&6E`fS>G+EpW6@Z9=I)Ogy~AvF@P2a3{|rW=_^!`(a6 zG9H2!fSen6xzn}w&X|JXG7Z*)BtdWUxaTaE@Aw2@U7%JwOoyhFQjhNB0%87tH;y-( z68_-Hv|D^fvm0mt*(^hM?2V#^L1*=h7JZKmO)e{}F=mnOC+{J)ElnZoJnEoJMIP{v z$dL=NC^*9fN3ku!?TXZOb-;aWgM!dkDv>c4&3};q&n2{CEHm*2T(J}>atmo6=^S8yPnE;k{S#e zEa5RX!VGJ1HRY;cj=4;AmORQE*L|jgyW*W{C@GvVh`r06LFd`P1?_WY+TlzFPk2tu zW4936^^QoCVZ}0?o=lwe>NNaxyQQ@snecdDfvOVTH@4ZyNIwLE&*$m4?S}4SL$i<@ zV{KhPEBu<#XEs>o0y9x7^?=AS?;(TPiCAAw5XsE4AEBMO-@sj(r4%$eY_btZ!|{g) zEja`>$T1j7^_Th!Mt-iFikk~4%#LI*Tc)15hxGv|nN9bxg05b_>!G0)A(i3(i1hrC zQ^{=v=!j@Az%V^NXzP^VWb^BFm%5-+pJ5<5v&|GtjMIFR`LR0p`eepIjfqzE54E*a zY>7a#F9FcvSkwkWS}~YN#1T)Q51ZI@nTlgJdEIC0bRPPggDcP{yrtInus-2a^eQn0)tl$fj;r?~6x1pn){HeOS z__3|X_2un-30<%Gt3u!9k-<2?tT%N^oz?nhndp;dyN9GweUdWouDpu5jk{M;FJJy( z42a+U#an;9-;F!s~QWmW(gWK?AWb+$dGJF z@hxYiZa9DGk}dmGLCBitbjF^JZ6~9ahqg?#Wn)d)Z)h%P>rassc!WLZ%&~199?EP! zw1^^Gu3cz_t||0+&T|hnMU733)oxoi=fgK9e&$-CmdupRSJ}+j;*wG2&wlNwzh6^k`?Z7w{mCTsO( zxxT)>mF=-zL_|asyP+C^;ss^sL|m+d8d?#CClUKx=L6a=>Z9I|?_Ao5`QHrTV;R@$8m z4~~%82aZw`j+S{%JIgrxBz@xPj`Wu>`jlnW)W#arF<%!ykp_9G97-G$(qSgE8jiB; z+)%*5P35Q&0Zu_fF+nrO74Xr?kU`CorO8P(<58jXS^+O(mv}A0ZCXPe_M@#P4Zd=kRw^XSFl_z#m)R zi#Xkv+4cOqSzNbNL}tfMbZ_EE98HAN zxJ7p5$YUC@m9TfVJca;70oh^a`!>g8T5ky*ob9=+jNUmCtsa#b-Aq|&oZ_4c@kHP&wTN)vJTz6bhf>4AE8Azva%0=ZRsOXd zjw?-^v~TWuoD>62)fQ2a48*T`e0g=>-Z)D zmeZ>b&{r?T(|X+r=nb_GojH9^UrZMBiMW35Q^tUbe;z1ln*kQO|9 zK`81aVm5sy<>jxgt~hV1$Nebz?umTi^it+Q2{uQt4Im>G;;uuAwIPx4Mwv1##&dNR zk9`_T#%-8Bmt~~1S;uB=9d1tq9Q{;38>tJ#F96mIl5nwBzbPF9I{)I2$x%rt9D+)o z*H*ff7Vxgd%UCk8jc>lEKi)fvqx%UPJ-KqV)ol@78k@;*Al#MyjAnf$ueVR5CD>0v zW>U%)P{#ec7f{b_DTo$=W7IXBj2?BKwwN7Fzc z@};T~dgooy%@^zj4Nlkd{|r|KWOcLfmPOwwZz+G6DKi*!GlQ^l`f^OqEn*Q9oG!42 z>v&j|E=iKpAf+jxk2Uv`q%rG;*wQnB!ik|+YS-2Ngq1M{rKSF|07svw_k(YzGi0dK z`yzNV2HFcWJkJ?ZkIQeYl0dFNuJzKBw&r!x-#(z^vgBWkW^9kqlfr0^FvS;|YIjF$ z3AxGMeIRjn#&g*!*h@ReXynv)Q-`q0yu)qf zMW07MqsT^<9q?WpVbX1v0E*U_iQm|io`3sxbSVwU;$3cLQVQ~9-3Gj{jjz7z&hut! zm%aJ8w>9yi`x(Jo!}!odk>-1g0Sol>@+XzgHQfK~+PSY{P*qbyqFd8#i*w?K^R%vO z(+h_dKe7`a}sNg{0y{RlbAPx*~{I9By&nCM-%NLXc57rE8u~^8~q_F*yag$biyWu z&LMVOPX~NWqf;LWikgxZ+44b*-#4aK4iKX=2wiuqA+F_0cV~4u4a-Gf)=I5uqUsOZ z?|_hN%?%gW>s;f^h2w~MzdrT8s+HV6!=Gk-?yd$3K$S`(u%2Eh4s7=|Tz(_=L&H|q zbn+x4{wVhybrAQ~pHY6kKUIz`R}>DIKM{YJ(v4e&4p$gkh=joQR$8K)Pd|OvQDN3t zu&2KpcEq|EK9u|Cx$mxv`&VY+GxgPfh#}9FnNK{1X)&*G zCDiSG-@lz8qEx-JJ!Ur>DXP+5%GO%9fwt<5P z%_su5PW4HpX;0rnJh$qo^>e+Xu<#1T)3V767{yi(mV28!V{jQPsA{cW3=viMs>Q@Vvp?YSUu5!46by}#sCYto>oV(X>Ke|+M-m7w1%N9 z{yF%4d)fL-8urUiC~5vGf)$*upCdMXEDp4yMHjK#_0^cWSzD`l3A=Yl^n&7qoe<(qx@3UqD z3e$5h+r;;VeMwU|N3z7P^0Q`78Z@e4`)0NYO}kbTLt;l^aQF6hkJMd`^JZ}SvP^E@ zwl{x#<-qZ#Yx!DgoX_@T_0UF* zj%0PkZg-tESCN_m>}}bVtZ7geiOLXZl4~|Bx?R6vrw(x(t)FmgWVNqH6R{IwCsZ7! z@}E_|LIjXHMgXywt+iIq6Rvlsu{TvnRDI@b$bMYqW&6*={ep&1iaxxc${W#Os61=g zu7wt3AO?C8_b8W!3MaQKMh)na{Xe}RRo)&x2)uf6m~JLQ+x9=c1bq?=Ef)bUz<~Nb zNK}>DoUKA*k?$#AU;Vg5797Jva+Qa01Aa-?GbmH8|B5Nk@(YPK?twrq$tHc5l18Sj zzLdZlbB7oJ@jy7A|69rGYc4qC*Fs_!;dSo4q{E9K6$961#PL=_YgikAXhv_2Ytmkt ztd-`O4O^?^8Xdrt7y>zHT`EElEx}_CWn4MA`@&xBW=Y2&J?+xWtJCKS6XQU@bcSF` zE6<6>Gh$oSpC>yM`W}5lb#{>h>o;-nEAHC52yCA@td3oBfyy9t`6s#7o9;W&a>S|M z#=BEzRUQfRYZW42lEu+j|F+-nrHP|)`!w2+|gh>#bnu&(IJgs)vby|?>l|4fs4x|1(%clA^M1}`waC!=w|z)=pNxV zpPcISVl`$MyPT~@28FpGF02Q>n$7QsIe!?vvT3H~3f>M-Z`&pY^l%^i9^R@=(5q;w z%k+m!^%T{Ed)t{y_@2&GelxC0d|n&(yWFTv^g7Wa6hnJ=9Pg+tu?1r7X74q23azh-|9rZ< z$%_CKcP}fQ-1Nkv%TqMAI!*Q6hs@2biq77*Rq56WF9u)*v!L)ojqQ{91-Sd623QtR z{+xEvckg~dU&1{$Q4~uVyqtpWEeW8yze7)pL5*@$c@$kywwhZArgKB#gpmD>w08iaY)XwqG zC=nrJOHvl?#Tpe}+IYpgn?QLzt%Wb|$r)wbDD0Ln4@YQ*G0cxs{IeDq(TP1%wZnPG z_&{Kf9RQK8F3ByN6e>0BI?+9^K{1pGI~ufB#c$_$k+2mWVLe~MiT@;jL0^5@6Z0&L z32`|_{bI8mMD&fL&vF)}s*|Ta=XtECja7J{5$W^Jg*gJ%5hdl#S)?x+`v@8*3)&23 zoH3R8yY}C#kb@k59%ZU}au4a3e_=Vqxy@=gUo$8%ibp@NNVo|qYaZQp6@?D(PYDkP9)MiZbH|bu{=*b;T&d9! ziKzMc;~|8Y7y>N1sNt<7>`AGov!L16>050hdU-VP7UnCkBmC}hI9z5R4#I2WJ@VQX z1O&(=OvhWSm~J-lS}mkZwuC>B$FDRT8A|oVEMxNrWJU5#P=ZsxC;U&+54n|YD>nv!epg^8nt-tc-nuxDnc{Ij?LCVPP#FEVjcbgA3S|A=5{eJ|6Z zt1-x7)n1M|ML8x|k3qfZ^G9uP)rObXt(gQ7-notoIWdUn0b#5Uc~hvkr~ZxbtH(!c z)m#)L*)rg2J!x@=`QHAFF^F)P@<-j~H1p4SQAn~iwl|{qQ}T}i^sRX1#VtPIi?xVG z+m>5@-pix#4(LlN@KKhz_Vo-3dG0`(i0^H^|4Hz2Zy>bQ&E`(*qhbuY1Pb1!H$m<{ zc3ILDIoEfeo2qv?#;llnO7hBh2vX(va=^?3mR=&3dV@txj6{tQ!}gp5`^27A=7jYSXMyMwl~z)%PpT53dq3f;fA)B{zbJ;?CL`In zB4p97^YLB`0Qv3OV9w!b>82icMNObecHc1JO)i89;XHXka2*?_Ce0oV74BP zB6p>~Ree!KO}UC$zdF2eq#Q1sS?o^vNtS3ndZUdtrza7kt>y>L6?p+eC7x3@V|;DG zPxL@h%6*tr8Lw3Ou$S2My)kGcrz?s+Qdn*v#2tMZJt+p%yfMPDTF@~XnlcG{ARonh zdQm#J-vUdAFQUvY_X$fgkvzA^c#+T7)~zzrcwmK+nA@^i*w%fY>F+rS*rSWU$2Tj~ zsAOgQLVq7`TYJ|{1{~I*J$sKXukSlUm&!Vq$7_Lt&{q+3(axMpCJNroZR54Abg!Fy zzx=xQ;h8s}tLEh-^mIIma`Gn^M~PN2UN*2>E9C2hl=o6nUrJ*xX6U!k$L8qP*5=ex z!M5Btbg8ZZ=#OHTt5CEvm|cfdCgdZ<8sv!N5%eZ`A9ObsmhKS9$5-dw5#{0^W1cIL z)8dMyS4vY(uae&F)kn^afnZS!V|K6CNSe48UjR~W*L%bdc}UjoL3vRDf2&nAa^c+)gtY%nEM%*3*Kbh(5tNd8vdoe zILq!zCGX|d$;eOg_)I>sncMo1jWA!tTGG(Pe5cddI_=`Kp!&$Q5`Wm0`AK^_XT$lC z03a^=?7*+`^QM>U%~~rT^gd0MA5qDAtUbrce6eiT$-+p*&Xd~t=te2!ut$@kpKGWJ z;j73t7CI%v8y=92VmX`dF%htZUo!q}V-&B!)!<(D&nhxDFKUoiXrjQ>B6JS6rSFy2 zNp?fTw5e{b;?sxO_vuWX#pIz604yQF`M)~v{Z-?sBt(IlhhuTo%O&Kk&X8@MqYA0k zKYIXq{9~+~{Of=IIpurwO6IgBUfB4_6w=-3pZNsUj zqWRC*-JGbG^;W|f(km_2AM;?3btT9UyJ-s$Hv9TG{_an`nP0ybS;GJAD^oW~>DPu3 zGwGp^TQ7?ETAx4rO8)QL{~nz5J(}wO7j62VQ;{T%liKxp8TKtelGSqH~qER>y~^}YGkUQNv`otLSaMvmM)Pi{KxWC&&MD9Ph309JCnczILqJp7mWR(N`* zlkHU$KdD=WEC@K-{u`RQPIUMX8wXcn$Unky!!p;8e=_eG87({(`PxR_TOVSQ@>goq zMw}mM{$>6#_e2X+72ugV<9_yG%2=LQli{J@K-#10{%)`W!%)1=+TJ^Z)MQH(m2EC4jT*gEsSbPagb9QU{Qx=oNKSYe?4+EIU{HYz9c@4OJH z@tV7jIn9G9_bq%32c9Z+GTl4hQ^;$jsHv&bdR#Z>jCNCx-aHNcYP({I^H?Nb28r~q z@%d^{7XeY zs=^bP)}q0n@J1x%k}~P9TDpe`>N1r=bsC3^{d5g(H)~F?=stQ+L_3=%cO7sO=lAN_ zqh5lAFnK0{1LY44(jO6kNJXl|?-`*lwNF!&$#z2G-$oe1TZUG!K4dV=I&`GfC1B*v zVen<}vca!c)~`1dPj{9BZ?WbE-$JFa&+*Cc$D$<;n>U$qY5ks&=8PvCz4R4rIljw^ zk?ceSa;;X5p+~qBwIsIe%l8CQ1R2VE7lsRm%>vy~!erF;;N8~%|AuS5TaI)b>*!&^ zbzGV1t!?p>Q*&~DEGRt{h7`p;}whT;%My+m@@Af zfl14q^V_*kfi1uGQd;$;8CHc2wiZ5q>#{+0LV0>=$|!i0+9is5VDmWrR#UkC;T4s) z4$oFaxpqpFD-{9ocL-N|7Z^IDx2+9+(IlKM_jzUi+QBva7vdz(zHuaNl8{)1rPQ%|y@wc{p zOYFTD1Y9s1)zH<8wH*f?u}0U2FN#$Zyfb-BznW33OKOw-s#~>jfo`-x%_r53Z&F$z zfR2_DfY=7v`T8{;qx$zjFG-;ID?V$6;9=E z+Swh?h6(yzqTLlms_Tvu7&qXYEN)vpEwdFs(?y0SjJHupERA)HCYInWrBuJWJ_>y} znnGQHevS#)JB1og-QGeSH_PO9cU$4Q&`&Z#(AFcf9ClPMG{P{nElnu`4>! zIiD!hFOb%yAZKiT-q5u69`EK+_s?nr5b*G0)4ex|?^(4s(_YT`)?@t4ZoSuV6i~<) z9#4$RdVRDG1!_K7fC4ReI=*t3De^?-_8r4kdzV$(CF%UaW^#Mv(f!y_+)VjGuUo&?5lmzDI~Buy)BHFg~dM@;_M+xgNtRj&Snlvn;Ym;H7=;%GwWf`>gYmCTBo zF-J&iH?8nY-~7(HL3EH~q#DsiC+u2aHH=g^c*as@d{)XUVTBjb3~

H{;eEI= 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 z%0D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≺RwuI=ys6Zab$Aim+^ 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 UFWLEm1oKRv#O1{*KIr-VFW}R9h5!Hn delta 527430 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%0Db^Cl1QFRY3#w5 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�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 z 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%0DET}C@rPV|= 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

@2fa1 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 CdStu+ diff --git a/docs/_images/fittrackee_screenshot-02.png b/docs/_images/fittrackee_screenshot-02.png index 60e1096583350264f5f8f1620c488361556a992f..7477f219343fd2f70bea4c2125fa4919c116fbb4 100644 GIT binary patch delta 23117 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 YZqJAFGU%_dTQ`rAoSJNrv{~?f0A~X2CjbBd delta 23132 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

JMSPZySVC}13m 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 diff --git a/docs/_images/fittrackee_screenshot-03.png b/docs/_images/fittrackee_screenshot-03.png index 4be210b1cde18ac15f6424eff7ee4ad4d99f992b..82e349571f1cbcc84d130e28344a90a42c046d33 100644 GIT binary patch delta 24242 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 delta 24281 zcmYgXV{m3&w~Wn+ZBA_4w#~`JcAjKn+qP}nwr$(GdB0z`YFC{)fBUSxx>v70ebex{ zQ}8jQz`?O(1b|cLgPO#^ZxWbbUvFs0bIy3b{%6--B}v-Rtkc>8wL}e4sE$KAgY?ho zZ_XnEufmx6(9(qshbFH<^z`eF(x=z6=jQs`uP%MBEIsjW4jT^KEM|@Z*J=HxqvJ(y zT!8M)?HSkgT(aMpmp8-LN6z3f+*z}q9y?50?D3=rJYYc&6#Uz3M-TMDT$8O?tBcO? z;`q_|6D6pu@b-5C_mgMLHDFliL2b|A#s?CErd#-C8tmT}I0~0--)APr?Cqv7Tp2YT_dy0MtJa%6YbgSgt(b(d**VRVJ}xY|Rta$hsy@$-50aHMp%`C-u4c&4#; z=RE-b8Za1WF1DRl4LGjwxJuI$jZRfKUe4Q6oX45M*$@I%?O&*){g8%JymH-dS6Ym( zpyj^Y@oYQddFG>QJ8a{&*Kp`cXDx3|>kfg%yxWTwDvBH?K|6184f z-F9(^6aI!ili3VDfyA<-dL1P7h9inkKXbOEqq@pEi$AW}NKf;gU74%4qkd>si7&|RUwlDE zEQ4(x$-XF6PEMzTS$X*EZ^yAz>mGuXVbXYqrVJ)Ah+}{bsUMRQCE$Id+-h$#%t3rr*gokW7YpcaK$(_-X6;Ku{@d8TRVJ+?8S4U{Uh=H z%T&m(XT?-#l5aif6Wbh5{TRlu8Xz)Kmas@Z<*R=Rfv0`juU&IjdO@KK3~H{)oE;+sN`tHNAB;y z0lz#O!1)Qlv3hc`qej8uY?B@?-5zlnqNH1Bg%~J0R`@cpO+{}nGu}JR0w8wgezMrO zOL6nqUrWSF5Q<${5Y8gr#tnMDgG`aOWAo?4w$=(T7)rZo;F+_=Dhl z)Q7!r$$zhdt1Q9SwuZjYlOTP@D$g3pP6j5O9c#waoVn>lAE4Ps6ny@CLrPWi(80z1 zyjGgdK>a%nl{!UawDm0d9)MMopK4*C9R*91@ipNcB?P|U0P-82<<3HZoY#pB?9{uc zV~CoicjniU04Y-U;knk+gI?279Op&H6|<2gcUICUqA~@|@ARz{N!Zp4=8YCeOVSba zm5oLkGbHZCacse0)R6Xd=S*d@_ELR(s0kpP)=}V|E91YBapB-JAOIlgqpm^7zss~v z@Wsb)yhBU*nTGx`mJ>pW!+4Q@&EF-q#g0iH6)9g%nH6Bro%vao@Gpm0L8L@>BY0C- z9uHEcwR&WjJ!etX?qssQL)i9kjInZ+mjsHy(}A;OE$5@rKeGGg1MO+bu%{!Pyo-Yr_Y zD>9ce@TMG=h4xJI2Fj4BhZE1_FHGz-)3Z^o`m2EBi!^?|+AN&gXnV|OKG%UNm34aI zt^GJY;E<0jb7m?>G-g+WnK2eOM!p9vW;kg2t`CS2yeGD{AyNU-jb_@>iKtwa9T1 z)KC}@LrJ!bIC%Z}p%?w77@LVXGjiF?$m;)O{ju&X6uK%q>uYGk7?ZGarwd}#~- z^(j+DQdJNekDmzM&*M^rQ_S8==ZpE~y2HT;C zpG{<)67Y&Jxz|IQlry6LUgu*pa3K#^@i-dkef@-??3HMiHo9UhH1UJXrb0dg66-xD zU0f518xk@&31d+b*n$44hPstONWmikFhoUqN=W(OZeoNJ6@cXC2D$fG+tHjd=O@E* zF!!8DM`8THeYfjk^DI@^*!^S`!Mg#B~Gb8YLHmfiQ9Tr>@G>Yi@PLj6<1RO6dg_9 zU|{wmyc~kf8U4~IU$e6Sf*Iw(FxnhyB#<};A47f9NvFe&7D-2kR27#CKLmx?-M^bI zpWN3Y4}#Z%iMwS*kAXM>9btY9JM6)&n<#UcjjEfuSpStail-{0St%$F$q9O5i?}D! z_^rbX2WHeNtL@p_zbcOJ;xfMgn1-v%B+x~Ov(pj#(y*er7GN%2I+0dFLj@R(i&Sjc$A;SmY|n^g3{`8i6dl+S2ASqY4etZ_PbdUg^&)B)Z2$Z?h& z3Q+87|8?_Slf$&ovepF2e?gnUIpjw&q7>zC$lNKNrQRYsM`uRUq&o}67Bpy8EA<>n zk*dqIuxQ49X1Sq@u&Jwl&=iRufhEw~ZDLQbV&Wsq3V`fgaealt#xDsN<0*=1Y=Gf) z{Kx%wO=1%E?vx3>SHf}UvoqIDXHZhG+Bt8XM7Na$HV+%kqH2Q0tZ|m8p{i~bQ*xjX z$I$i-VC=ui7%u>a4}jVatMDjeE76dSsF5RN|Al*?9R26Pmem0iM5 zk?KG*0Y>QQ5Va*FG5^(cxdllGClGY|_;%GZsanoXSwy$1c}*wlhYRHKS3NS&leeM@ zyhXUQYWEh;2$s;>(#N_Gq}ME9i6}0hU^7k{BlY6g`LwkY)#%b8bpVAyG+#PjsG~RR zG7Q-h36)fD8lX)r0!x|Q90g97#3eFsD2;n(XDJWDDP?XJDN}1J{e}fn=*%0*MyM&# zw%cF_NF)6CH5?CcXTWW)&hFXS+GW?danGoDBA5cRfyw)O7fo}54}A%{AriaOl|l+) zi{Swu%18qglw}?nr?cB>Z|LdTSB_I`R;yJ1cieB_4*-D79@+8Ra>qh44WqQ?i_)7Z zwp)ZovP?kaf%Z8RYODQmpl?@j14Km<*6-0$Zf(At@YKAGC0-R1MG|k;GJiEZLT$uN^0Ju{E+j;B7R+EUvPx1Z_lz@V4M16;|CEacxMBD*d5|1Y$E6Fh#5(m+ zIR-DSB`Pp^)*m8s4LY%ZLjpjvB;dD(Gn=01X}(5cafU*`5;Wc+5;|NQJ$9J;J#IqK z30o#pw2zTQ^H%}9$7+pO5RwgIG@ssyN?h`ZZp^q-Gec)sdEZsihoNvob3PI#i*8#FCsT^o-?eqtgui^8@f~o#jMRMyoZ%NPzyr;O!96@PEQ zihOISvUmOK?`b@$K3COL?ccHg4*3VM1obwfO*{+pJNUIn337coA!^=-@&z?~5maeJ zW=BM^UQOT#4AL||;l_Uh!U7>_3$_7ZVmV{?3kGeUm286FbmC>7UZvud{IAhn|-iXA{OvU>EX!AZO4nbBZ?mCMbCjK~0RSTr2Rb4!FhcuVz==O+a2kX)`bCdMabf8q-$ z!m!56K3p&Jo7Zs!6?HQ8v^-&v9H0}RDIp~Y^ji9XHXR;j!R)$qZucQk=W-x6$YE!e z0t1>vR4ZSm;i-^D0}yZ*5Iknbo*vp8tQM{VAf+_$5J7WTNWUxCfS+RU6JY>*a0U#9 zuGKVho`(^=r+A>~B49RbpdEqEfA+#82$wa?C;hRVgx{0-79A-5Rq4~rzD72c$0V|G z*5%XXooDI^t0040qZ!MQQD$aoH%2}6b+Jd_>rELddHv&S+F)~7`De_C*2wi-I@)Im zT+O)yE5B+TuvjJ+jneB!QW_3G0EcOi!JIJ9reV@Bll^8l*-Lqn!-SigUb_<{Y;l~S z&v9Ao(n{37FZp+=dJnC=tS;REi|-%jZ#L5hNgR)ny>5U=96Jsr_zwU!d7!C%FYMg& zN`uts?|m|Q7ziJT9y^Druh8}o5a1gIe~>1qbm^N-o3T{!aLLIZ|5~nu0MUpz!Rkk9#PRjuja4GFP-uS=Y=|7k zMmTgv!t-cLn&VU%+YJ2uTsoZVFe9!j50~WP&E?}-*AloCrhKRfvXw>J`)`(hZuQDP zuxd62Cypc-q_{pG*ohhNynJ=*Gvou0_x&RM0gSKhK34Q3UQbeRIvsS+<0|IC;Ys&o zb!nr)166W8H^axAGv6ct!wbnkCAzj>+(2`1FmNJ(bIUMNwa|`>YJ;!nbqIbZRfB9B z+@ln4Govid^`}oVwY_IiF8Yw@H1Nz3LI^J5@hUwmo0Xe}eykNBX>XBny{ zCs7Q1D(eVAu`m03ZDx{lcqDypy|Oe4nKF-EWj!jzE=}x6at%eWpm}60VqRxA%m9lDo1d@fA;>`-a0(>~NQ3x+V zA)B{JDcwrX1ug~l>DNb`w`ANN+LMGf;2GeSmJWe5=cAdhQ@j*U(b7X0F6b3sP;@_J zaCpLl1ZoLPMIlg*zs6usAW`E9S{MsWUx3zP10vTj%LWcO3wp3VPw?oBrV|{!=wdt@ zE`Rmu;kJgC_iYhmQ2zVE=iD>a{WTHZw4^-XqwT^EIE$U0zF#($eAwPQJ8`f5ilabB z&1pn6#~%4w0D-b&g<&;fOGK-t;Gs5foy6UcjvCG@Z2KTgE$BdY&c--H`#!u9Biq_E z0oE#W?Y;#NMsaI!{Ms{tlNKDZH*ky5i`F;kLJ)(;!yW0YX8>CQ!q`rB*SAcy7Ay9% zn}FXOJ(gpKV-08X+oygEkt?KCQcE51Y{c(p-IDi=+-!nm0N&P6b&->7a4{5SB}y*X_OT7aqKO3`@(m&J}l#Srgp+}Rm6TI?OvREJa-MEU@-ceYn@iv9JSjH)%@ zX15XT`i$>-4V0^DoVJ(@#dp?SFwm);VA#rC!wgXdBiozSWp{6CV`Zj<466s zCN@WvVo)gQNty3UahX0=nn)cj0vEPK*#F|K_j|{+S)1#mKV&qzE`dfjhu3z))RH$Gz9 zDnLQDem7~$+U5kshyqbz_$QZ_+sv6?K0p-Y4j~SOqXR%dbmA5& z8crIrGF-;C*7aH#01#3Z1`{(z23AvAR#Q$^S{61YMp_PLCU#mjCKE$rBV%SmLnEg6 zPplGH21aH^Rz?N}CKjgn8f*s`Rux7@E*4fUR)%;Q9Mb>yTCat(LsXB)X8;9;gBdCx z?)$RG+%5*(+%5*9um)&$-ZCfn&T^~){sqJ?s#NgQ)L3z9Jx)@) zXFXiIKcFd>-XOcia=G5%K2K^rH{{K{)-V~R%WZM7a;tZ@P-C(hYhtbFzlKVNVCTES zaZRw3Kp7fGsoZou?R@$R8Uzw@8jGXl)-wxI%OdZjyGcor1EhF8FeD@-0}DKn7!&~b zFn;g<9w;U_ISBLQpZ?s&l}_dE&BfDRIi|-c%RPjkcS-rIB%4V2H3c3Y6puWA%w)7f z8GzRP&MGgHKGulB^9Ked)=}J&Y5B31P-m>`q)FMsiU+Njtts<%%N__fWN|h&w9E3` zX4p~JwSQjT9^D3qNeq45T<9ICLIS`U(64vG+}?oq1*E32BrI;pgR#;ztmo?)K~8YVSWfIWkahCzB!fLIGrOxC(w`_jbf_}ZAFSJlMrG6Hxn~f-C?-G6$~JHRY?kx zh|4$QOA!k@w|5ol_DegId`+Tp*v;vCQ`a&UB5#A!6%k0S*NyO>sYZi_awxem3zlGq zONxZF^s=##8whO3@LoVzwSnusOWmk<3Yjt^sLci)d*VLbwR`4f)(dYWw?<@5t-$-RtvCL4D;o*JF*R>|OWF zRl3G<)Zgpak9}n+saKyd-Lva~$_DSczo*E4(e`DCKDqwTjskjpyah0ReWb0gBTxuF zOSXO3UygB;f4_8lso&AN6`FmxdaWZUsNR=Ss@=ET^$b;xg1qGOde5WeMYa7oi&pVH zPG5VsmVJ{=aK()Yz!~@XkoP)oG+R^m4z$E~V%(kj9!IRACu(~Hzj}|R&}^fJabMK& zp6>K|4TISz(7f%Oz6b2QRNuw6>EC{5ZOfigT&?%iPQZY!|CKRs+H4GRSq3MM?%2Z85>}%IEQkozVOF+t86bngRy(^nf#+=1LJ4M z=C>R#Pn>#!Ck7zKKen?3o&6MFiMuSwXJtQ?;pm7e3yYP>;CL&rRyDseRw9nrz8+3= zb{vByrf?5|ujEhy&Rx8gkQC>OqEl* zq$<I4B=83pm^U4 zUNPGqUIU&i#K3h99^I8J7l^y=b;Id5o*;`mq&*m`^)(KFBj}?S7#1$jnQ|3)f>ap)ZN1v6hI~`FFo=%TThZck2jco zHW=K1dt06q-HHBaJ+aW#9lK4UxYWFEhV@lADyHiz58Kf~DB)Sr z<=EpZ_+M)%<{ceZRRi9?X|}8V4rlAlyR*wA-~ouJ6X$r(HN|sxaLt9k(}vNMm+xoR z!b4LH%;A(6HR>9D)tiDnhe}x_;wRLMF?VX}3uICJY1j{{59)4hKEShcn3qC<-8%U~ zoZ}2w=#nM1wXa&_R-rd+*pr5(E$;=Hwn(=Ug00{>z)b^qTbGk%%vQU*le|4$W>@B5 zWB^yqQ}le_sEn>Qd$iU0DB&BJaqrIrIm~O^r;+{UO!j>mQX52hCR9_?=3f~b5sSAP z5s~Rj^*;L$#IaC5#k~Pk^Q9#f1*Eur`{$Q=UK~pk1q$1dvz`5Tov|F1a40=bkF7o& z9$5Z5W+Um^qfb`nIoZv#>yl)AedlW>1c1Jrx$hqGFeARZFyT)d{u*O;$SZ2&h^;FT z5fQoX`+sQy2PxwgYb4etLW!sd)XCxXZ>y#S^zS%VnCJaKf2%sv0=qvDldRt0VCn3N zMfSphfCzykMFdrLDl*1IH(lv@v)x&{O*D<++RIT|t>q50x-|yeyXx;f(ze`EO#!*T z-EYc}-QWy9ST|S>6@415=mAWIqz3W0??hcL>nt#l8^(QTg*O{8__}(Nm$2f>Ok&C! zVHu@;Q#vnpJ3T%bU(Zt$>aCL6My<8r(}cK=2d$%+t3KU`q8h8NnR}3PDae*1!@N8g zn6w%5^{tIYhacia~!6Akbv-c|!x|-gRH4|QP zGq&;X)V842`0^6|gmky!>&{L+0$SS179GC6T@WBGtu)Us{(~!DD@anJ1cbe4=Q@W$ zr6%j`L{IamXZNFg@`5bJ>pY)sijhsuU!f1M)bp8|)G*;C>#hM3q(b8234lhNrsoe{ zR2arKGgP$1M7IvTrjAeaahGM}P>~eRS=^z>j2;_f*e2xu%cqA zCW_AK(4@@BwE!sx(*(TKk(_70q*`F=X8}dFY!Y#!g78jr7tzI}yuIdk$9+WzkNzzc z;!(dM|BG)OS(~~Xxt}k50C3`GE`b(_>g+=R15K%>rzHp_n`=_rNeji#9mWERPtSb0QUT_-6h%71uvY z^`gkM+bIuo_9kb5QcXZ+@mSA!DWkUs>}dKtj(Bg}kPzJ4bi~td0~q}sGFe3+Tn`GZ zBghd20fzF)*Q3fuz%|W2h(+(6CG%7$|N;Wexm3EQDC|_nJ(Iq*&Nq2i*?;mJRYmc71uK*uwlu_~3C-pBZtc zSksFEtj^<1tA8fM(mePS$kFi(zpOSIvfA2sd3z5JsFXFI0YeV>I!$S%$q~bmh{=m+ zZH+(_X|84ri_!jA&2xN>rWD-DsE`hVrtOPi!M(CtDCs*Sdg+!AeT&vCUM~;+QqxH; z)Ovr4oMdFX*Vm&(R#^F@9+DJOegxh~s?q@=6VP@-sm$pI=ycVU!B<~TXgeU?2d3Xf zjOGgmzuR>Kz}RZ$aQXSMiui25?)}}vFAry6isQC3-90eoL)EjIQrq|*woR%N6K#1> z_;I&gU3`{OezM_~UgZ8ju%SZV5^GD-;#a*uyRYBnL+~B*{L|!xYv~3=A!7ba?u5O2 zw7KeQIC3U3i{UwT|6!5x_CO5MwuWfM>SLbG#j&ji=!dXIpj?tRubAYgW?_x*L(bXd ze8U}Wo~J}OIaeZL@fsHG`W>lu)*G$g>WGrv_+f?LpIjcnVDa{veq6F-!3;yM_ZhcK zyl~Z6$1h#bRpFr=jDi~eX&g;!oh7GD4%}>%oM4%7u-(hHrR`;M!3a4yX}Dq2>*-H;M$_PYdl)Kb zCUnHaOd_Z%VQ@V(?HTkNEdl(m%hyP6dlW6kHmssmsFm=L7IzV5O5J}!+3%~fhP%B1 z*UcNQXd%^|i|wcPvV1!qk3FKyN? z8QcYC`=nFf%eQay&5LgvEyYmklti8`a~W;njQc?WZGW~JGbMT{#R4h2mDXPmyWSmnr+t6Ke;>Z{zgYU% zGe`~HDRVw@b$wN0Po=w}=xcrHdz~}ulOx$7XElUa(o>n7YD%Mg=)BcxyWM(zPX+TE zG3-{^-psGlAFgl9-t_~reX?=B%R^HxNm(4YvR~J`IcyYGyDqW5o-iy|l51{SK2)aL z)4v^cL(8Z{qxiJ2H+1IEl$zL^PE{-R8r5Wzvnrs>+&FWkH(Sz=Jxm=7m z!HBc!f5kWlC!Rj#!c*(U!@-<&@&f0aHovLTW-UEkp~$#29JK)w-f&w@J*ja&*DQ0` zF7zOrRN<2R%XymR1NQZ_mIhCB632yr@z90) z)3Uu^hyjtmg+l=#HU_xi*Y-!VZmE0w*Z8X-cB;6q_g>AjiDL-%nzU^RZpbu}Agh}# z9kS?dqvY1s9COuwxP*T@co+vij{H2r6xs#Nb}E}YeqqH$4{+-o24Ywgg+0jr{hI!9 zs{ettnh9ZcYX55h#rd2q>igNs-)~pe=ztrtxq=8aI{`5K<=k3ROS-qOpk21@5%DZz z;Bacigr`{Ho4tv*zPhM34mT~+w|Gc8wr<+2 z77_wyT41=|RB6W1T%pkz6?k8i{j?8w-P!j#tHN1`AwJI0=X>F}H<#@>zE@OG@SQ&H zud8sq`~VPABu|=+n$`2Pz5?Vt^xJzUoiVl|#`ldT)A*IvTM>ZNHz2!SJnI}BBV$9XVV_M7oRCMinJsCTdOgCuyK4cgL6cuotHvF75 z0HTVsc!oKD+F?&T&dceES0rCiZ{u-}nFF(znJRWEPNCSmyCi!Urn-7Z}KbnE+B#X3|r8?pC{&?@M zWu?O%#d*kMqqk~?GiAprf`?mY&$igJY!RZrZW5Scn)Av#|FpjC%lkJ5?9EZ%Fkf|{ zE!ly<=HL&FyPaSo+Cz~y*vm5IYyoHK{8_DbPy#-*u-0ED^|#xQE}I&ho5Lz)fERt6mM4g_(sNh>wKZ=!OL54gC;MbO7EpA6vb7?~_Gr=|K6z(K!JO^_ zGpL(3`M+kKY{c#xrc<7k`}^P$&jUsBk4N>CM_2u+%zO|Zd`w0VSB_}BY-~RY)SjOZ z;!qLudM>Dfh=@tZ>G^*%x8PWjHF@i?-F%{JjosDZ%cl>UZMmtX32V{*r#A0us@$X8 z0TUF~{Q_X99`CG{O8)31wc$O;ze-Zf#%hEwe$CB{JBUxk znXUwQV3MWx^;=?dY1zYu-o9Cw24iDz4r__+srqJ;U5J;z8Mm>W?{=b}84FsK_<6lE z)LQ0#icHyqY=ka2&a#%H%|ZoF>m23vEEG79JXCKJz6g9jg~*%}CiP!E*5GW=WO#A{ zRnvRNS*JGtfyMRGS66y+22i6V`rB6pC0rN1_&M1)5O8vjc?usNpr;?8x0@5^3y%tG z49@>4*-l$0$i&yl#3^}rRJ*vmmQh?!lBUp2n#?mm3;(Ao^KjheZM#{Q*{ogxY_L#5 zY}0+2G_NI_+#d_e=G|E@m0p$GE+W6e$i}tw&`xV?P6(T1=m(r+4KQ3q4@@L7)8$6X zp{S?`l|R$hbnnnz8kvl{JfUNPGr0}g;3#^a61>!o>N5JC(6UfzcS+kCP z>i-#Vfn@kpCK`g*UKM(cp1z(GT|U2>b-vQKXKxPfMbe`ce7;C+v^vvv9>A?W2SLFm zL6kgYG72FkPsNyq0JVubKI8IDgLAbM#KaB|KWh4i-1;779f39KkD^&#wYC$FGt@Zz zECNwVs4K`%#&MFCt+V?Anxc4~bB2p}*7udVFr12%xoWn^cu@$P!LP)bJS9>!tz3~) zRct7pJ@27etq0Ce;L{MC&Hl&}q*sv5Tj2X#AOgLNZESo3O6B2C-(1u+vdRMR^0&5x z2ejoK?-<%QwO7n4ab7T4m|A=0uHIUIyTK+wrn>BNc=-@yx9rE$xLZhm*W9@Y=EI9G zInA_EJ>T{{;H02j`js=bYYgoOclKAdN?L|_7Zz{OB^kzE!!ge3`t!P)Oka|G-_3VC zM%vCc8MCVc_@6M%xFk>V0t4u@Mq-h%u(=WUr>|*io9^J(GGsrg7298F`MXSFtYq#J zexS*KcK$?1M&?`%{$7GB%y%S+GM~yATzFwgs`QR*>glb2%9w|tP(U4t3|9{U_S?t_ z3g%v4@iMt@e_B&^X5$NXoYC!u#KV2TD_CbHSn&pwaRcF>xg`4G@%orLgikKbXv@%b z1w=Kmg29$U2Z+ri{Vk+viEb-G7Pxjxybr_uGz0nG76+`?Z%q4qFbj8e$qoT?DPeg< zd2Ix_&P10#Ulh@z`GM^i_FSD&@X*yGSUGI=4C|=&)*X(wydIsqKg?2Scx@Uri7h{Y zMXv%NK(z?bC3muu%OT*Sru_widao8i!F`73tq!TF%gZfSn$9bM&A*!9!a>B5bDtQB z=I6UF+p?&Ud{vBacBPN&jv%+q$E$sYLZs<-1JiAYIXrmouiojRCsT#(-hMoz<<8!S z>dpxQ*UDj<=@^N}YOrer%6W0Cxr3pq0#(3p#t#jjDk)I?RNpVT?$O>(PfT_TCLp@# z@NhGovH5eK=v{e)*ZW9%%xx4UeA;a<8(_|WYrjI8418f*0 z;_>`jzj4@)WS`seh*9{OkOQ2vrR|rd%a8`!AK-F4&XQBNye^ob0*?ZZDNerw*?zEeAVgj2Y?w1mO&su-I$e;HrniEy#ioo!1Saf;(a6r{V+@ z;JHz0x{Z5cHe!=utKJ}zrZoQLkyuiWazV+Lk)pK0uLoKGW&-;OeBms|Xf!7EoZP3V z*`eU1IYw`8r}mvPU}j$f4rYt94t|9H@vgYfFvivA!>XrlQoIb?^T(`ALfszQli0e1 z2}*0&=+!mN8#-AQ%?0q&UPYDXkK60Q^Uf*luktDQR>2+Rt;zOQMI@aiUDBC$NuQIp*Jl6&ulIA z#{Pz}c;*Zh%hL!7>@KiuiS*ZI!0Gs5m0=a-w+Wz9wsb4!h$AQNRFxnBG2{PwWyY*I zJ!|j#^sDkvy~CqN)54XKaYzQq&(rAe>`^5N%?MMh8*sN}aDdeSj$o8PzOvTv@5cl< zna#&S&K3Z$@v<1l9dd5S(Bg~EBd53N!Z$QKD>auJzUbAP+o1umqKp=!eE4TJP(D~tX6x+7S9(6iI089!jz6C)8JgNgXaV1 zPY3E$oNx6^53o9F_c+mYonh~f>30qj@r0T54iDz;ORBF4(OI$ha}%uC{4Cl=P2&5X zjn4fXtnYJ=a82zXGEMkXhIQ33t^rptqrDIZSR~=)h6K!7*i@Nr7SorZ8ozI+p!5vJ zLXg^*12|TYa;Q9F(#jYk(luoJvx+UCCP~m!;CreXZ5{7rm+M_NwT7axB$?vZ|It~V zP$<~1eQuNNx%_MJj*~2rYr^)|kR5LtnE_mk+}($j7UOeg9oB`@@1}o$$O5_^Cv6oK zW6$?G%55;-(_H2gco!Bw-%+yxF_X)&BjBO<)z1m*%wK)ssNkTVHkRBQ5x+5kwtL1M z({1V^cPJVDNDq4=Xf&S={ZEI_FTz-0BC7{B{9vh|pz!L`5yKAmgXTmkW9aC9S;+8y z!Muf)c0E!U+;wg0;4Z*v_tx#kjfVplK~<$IxDlvhN7H9S2@K+E2SH>vA4S zTa3|;+Imcq=?N5KsW9h`mj<;OU~m_4+X|Fx$}V<#N?W|5-gjch z3Y?rQl9#wQXD2VgdGTHe**7nb4_2^_QoQlGe)6%?MX-8XHR?1KE47$Ukv|$U_=JV2 z2+Pgg!Ca5{^Y6=;5Bd-8^>r}yYWPvi-2?uJ7z6b?1Znr~)>hoHR+w$@%GyG6*Q&99JrkFMwvm6p1bWk z57?&yNuC;A(G{-~L=34K6}3Kxpi_ zMZ_{F+)N*)M_O8MfRek@z~01wlyz5$hWS}=`IPJVDYRGZ%QWwFU+%91%Q%~)=`Vtn zPYTs!PkxugY@Bt^oXaG}I^E5RV2Y9p1o>%`i}|`p=~N{aU;qOE zSI_lnrOrb_5#xIJO6M^(HI8~6fZZ0oS0>~svrz|ddHkQ5is|_Z&-=W+9BU{gSQYM~ z&E!AqkYR6XN;5C1&DB@XBZ4sSoS}zFuzcwF zH1UxcG93Ntsp^hK`&+I4$u&C0W@9{}`kRErY?>Hr!h9d`J3Xn=5^6Ga_@es@B-rPU zn~*(LZgfQvs0E%r@s{!8`C;>~<>gP9^2$JA+N}7?m)R&#C;hzsO zh5n;T_5}*w^`AN1V5kA2LEkMGo?c^~>ErR|LL3%%Cci>!MTlwt=ZoWPG-dwG9(e*K z$ImK1ftT3F*3@oD6t%TgII&`IpGzEyecZ<_j<5E1&F4(kcU?|(1VIVS+9TGYrHO${ zc#xU3hG6U1&4p-Pw+Zjft1n|gF0nRD?z)g8S@4L*m6i^4fOXa_F6Z1o5+o4YYv9^$ z=EZCC>V6}=+UJPAv4B`h+hW6q^w;-}Pn;f_MreqSg3p*KkyYdCqrBE+ zpw_Xms3N%~zJ^3BSGfV@3t}mhbIsASX8mFs)yaTcWh#0a!`Ti?jup2M*T383=wTUZ z1{QDdcV4Zb0H?O@9bmh5kN%^fOPrMFM1G34>a4@;cb4VuJL*}y_L9~;Ci3se&We^} zy|bh#LfZ`}F1D+oEWRKSnrAIuJ$mq}U%yf@q2(!3n{=M9YHuxCbX(6Rt%4=9EP!aa zQbT_v3OEckKTvN7$j>00dx)S_;pGW_Z%$v3msfWTaG5qkTxYU{|BK}-F;|E@jXYD{W*Mffj|lT<3U7*qLO%-`-EDr>G32bAGGtJiVThHNO0u-E&+QB3=6gT=bCrT z0JxHgt3=k*Y)t#XyotX#+J0H>F$*zVSER(;v|sS934_t{13ZF~+E`@P`J!xnFiH4a zB5^RP9e=e%wvIXQ_xX^ur`;;wP(sx3=_tUND4Wrn?fvXI_S$~`_OOd%4M|hBS66)o zy?*qX%f3)qGvn~^AQ~?cZNxi1PCbSDJI#2=;GKp?z*ra*h^`rW3vNk}-mFW|-N@;h zl#7nt^Lc@}t}Up)He?G<^rzlIesX8T#KpTYp4{K1Uv#E*C`y>{WK>lpt8X6yyLzr}(zTQNTE|8`-}EN2tlyeJx5raR zYUFb}>9mzr`1^CG0HdgwW69##;j_vsWROblodbnJC+Kj3)ka=I)Bejh+8G-mO5LXg zP%LYv&fR{FMJ|8#dhBE>NqSO;>wAvv@|7I;Ve}13%$AzeqLF=!RLLE>+#>9 ziaIY&WN;K0OS?S}aA%In;TC~*Ge^g;2MnK+sh}6+N&Us|G60!N$K31E5 zlOji4Sy}Lul1wBCN(HcRfTV>Yw<~TFiaqkM%kBlqJeCtJ+y!1HRXsp-Z*Ou^E&Ivm zmp;QLL#DvLiRkt~rV$>B#20bgZJ110bswML7-UIFoHA{KO(L;o!Qciz&v#uym%Rrh zv^Q59SX!V#+phXXPd|Hllu_;Qf%kTYPG2b24WY_GAqM{%mBE1PBh=8F4LPteWqzX!h zASFmkKx$}@fb=H42`C`FcO=wMq((r%&;o=a(t8Qzg!g^VI%l2rt^3Da=YDtoNY=_; z`wo?b+dTp{#|19X>LM%RY(|3t7^F?Wedc5<8z$g4$;*s}~-(*jowD`vZ4L zSgqh+zhM@NT*6@Hr@F?qOFa3--$J5BjTM#^)Th%l(76T(7#_r)Asd|{>3QnwPbvp> zm0-5AxMD)UNA9SR6Kn2m6%B~eb2Ugq3o#T?Ft@E-&5&l z3l@NHPwG#?ZchjfMW7Xm>JD(TJ!m5t`{J^v^oU6YRL`TNzzMS{DzHW znMBZGPH|Bar{t--#HIq7kO5lIY8|e)sN|)z>5hZKi}xQ#fmR0AeDPmP{1ma^~KeJ{1-XuYv$rY)l!D5aHNT`9yCh%1wK-Y~*Z z67R+b4k`Wigeaai+uiDWf@Q&>pR0?xde6eWkG2VQyCdVZXEjZx9jUaD^|lp17f9-V z)j9CbztURaZ^!T6jBF>mW2L3Rl8Vbs$I2)$ZLMd&;pq0-CPMnNxho|FOwhdbAn%F6 z>;anndSE284L8VZ#YGXoy(7cRx$p-#$6W=YxfyqW=)N?TH^%w>JatcFN-68M z95XeCg#?M2xniTE#$-`_{ri2HYJ}@Ltqd%;Rt3@?p$S`1wTu9$=mcMKDK{zqiZk75 zQ@%#8y_hCS$MNdvQhjP9NxuRNuFa)+Qr_fHV+yCRxzv6 zOIpYfqsm*OTFcN*cgMR`r_L*a6EBne4$)^nV&U@ zT}ipr$@Ro7Sp`ZucLrc<`Ahb zcypUUA6B8~OrWQUifIIPyf~JMyVr~JiAso~)zUyx<>w3Fi5WTxIsem3-~D6jUDg+m zt?w|&4Ykv~f@)`Zl7kGdD&g2`5efhu8P^LCQF6;!5gE&8t#@3wO=o7TFzE1Py z_9yk%7EBkK)WbI){APJ^|MM+kGv?9fVcyaeLdAJY_VkI?Ut%>MH9q~bdM?e9pLV*2 z=7sZ^a~mg5cMh=pP2cT@b{x-D_7{n){Do8hGgPW|jvjIWe~+Qn&Y$@YU6=lA_x(T2 z`rn%b{QFq_OHKe$=I{UL;(t%7f63}!aysY#H~l-c{$J|@xc;SC{M%IVkNt7|-x*;4 z7oHo$a|KtiYNuQpV%@6oQsT4X`7h6ys_n+DuMk7a-^8T$=Sc8xp@^UVjTuq@|9=$! zkKX_D{r?Xe{97>OdPR!P_K%YuiP%-3UJo2uzs8E0>h#92M2S3ToWGLI!1zp73Z0hV z-LZ}fHl?n#NB2~wtj+&nUhdTvsYpohKJ}RDQo}D`1ZPzkT$2T#I<2P&Ae{w0xU6LS zGn1ST>40AL8Odx_7uhqMOf{eP&sBH_bYD+Sq-FAK;gx7gyi9xc;BuX_c2F99|H>Tp z%>7eeu-v}$aOrPah=X_IrracpC~6abHn-Sbvsp3zqRh#SDsOH<=b$$-xo$TFQc*i6 zi=xKb$?Ww(Hy7H|=j#&=g}#^LshegHrxNi1aM+0q8;&4$7i{?uTh58m_@vEgX1mV) zn@XY_gy-7WIG)?A$cfwbc25)~X#42fRXUx?)?-c5Kumyw|T z2wpdtf7!9Poi0&IEP@vBnTFtEuc*azPycCNxi$#|&O`r|(T=d3Sm)aIFFVxE3yK)P z`Y15gr4t@6+wehE@S5-4XR=?!qLtTBfk^R>cA0xsI#}sHn%NBqh3*QFhZ}{wyHIN! zAe^4Z(Ja(Mp75^ay8P?L{c$<-8-@8Wct+6YBTr)S=xM^2OWYig9KsZ^cRig9n(uy+ zo%G0UA{VlZ4rF;gW;l$}yFjk+^~eGtA)#xtQ=udxE1rAuhv;|#GkULpcKnpO(nr;y z1=n0qIwlA9YL=AzL1UO-J-ZpYU#&xRcelP~h$FihcVdw2wJbiM?M0V)v=CdCiaOZf zuT(W|yLdKaE43h*dVs!s&^5TTcXLG4&%pAQ^-8Mf$8gr!)iG{{F^=9*L>!<#gIV*E zZxr#H#WHLTW5+s)8>ig&zjg`~4r^D4+(|%bLOU$>Csa(9fUVvL@Q=29vL;N*RNjQ! z`fwP#P)wy2@#2^~Al7xr5T|uEawQ_xuzykRmib9f!7uk*|Gl@L!bID?Z-eHOFN+;q ze-19h$LUO&K2soLvSbIoE*f=(Qyg_V=6RLapWU$uj)(Rd)j%J<*}AbD-`GDcO*N3_ zLL-pge9ZpBUlkz~Fjb?o9tsopOVj;NSp15vJhcd_$|OQa_&DFNqDgxQ@N{bX7e5Y>&>Hu*bP4 z<{Z66@6g3Ix*4ZT?mourTpP~;Y+p0}H5FX%39bPa?!#HuTS&_LoF~pgN8PN=C{ovM zFB*9YLmSOl=K=aGNJCqyeAPkVnX6v0>EPOQFyhSDVp|?va{_WWp|(-F2zZUU_eNun zHwX!-aoyc2i!@Z=wvG5#8Y}YBK3;p%DaVKEnTAr|f^&4(vL)xuf1)T3yC-Av-npDL z_#IjhkZwp({Q4m)F10cW=1Rz3CNB4lLh7gKz@$J?x)4Obigi;A|2b0p0?(NPlsz9par)Yd4>-vBLeFDh)agmDj)gSC)po>f4eNO~A zG9P@4E*U|g)8*-B$8k;3O#Ks*)@L!)o9(F;$PH!MYq`35#5f|W3jG~Qbj8n%2g>>P z_L$zsOb0Pr=Z8pGfd*|!ZQ|iv$vQ8d0>}&OIjWseRJ{*r=!WSot-@Ry4n+{dmYj`# zI_!YID%p6M*PF*_x5~n3b#U|8B3r|{sGyh4hYadDKYp7GQABQT1zah=oXKdgbf+32 z2tt)c(2r*$`?QYVV8xRQH9Nu{v=3`{=37Ex$~(CfDYIQFd{(AC3+TCkY?(@q6X3u(*A+$A)OJ6G0@uZbl`00cw^*- zjrTSWBFEi@k*cvObcK#%CI?p!q++x=781_Nd@1>wBR1M1(`O~KH>q)lV0przlT1O{ ze2ThQnmr3ittAxg2TfH&+KWKXHq*BVfd2QkijSOQQM)py%V#q)o$NC{&@-PZLCX?P z(F#0Uyu`wGCI{ft+33M{X9P6kp{(z|7u6flcU-nY?!Cv6KC@1Lv;=tM>fgz+cUGkZ z2}(~4yNHwFCc68}v}y}~Hpl2RhZU4ekK>MRoo$0c>+T(iH@V5yto-U2Jv>sN3~M~m z_TELSZ-HDf=I(lzb%@trdh*%8P7QNEBcw(MiozwR;P!HmWp2oZFTO_@L*Vjp`7Qbw@2Fj`^4Be^{hO+z-^jP@XcG4 zFVT@K9aV}*fQ5F~g(f-vmPf*LvhrG%vtftHkf8j;8vD$%? z?~Oa@d83o)TJzWd!5-vNlBGRv_vM3oj7P8TdbshYFh?6LPqy@{I=Attp&>uj&1(~d zEZ<>D+A9k3yi4Od)NUu*jBfab9>(}v)cVl4_5(9jkpxsJo!wyq?;{=63q7wx$Syglz1lm+jb8>yG5* zPjRfh`R1E}{9Tautqv3Jn=cwm;T%Py0gkFmxzou{<6@mC6@Gx`#1#x3lrB@t)CKoJ z;sB98>o-gJFqole8W(9;v^D*1Sjr#EQwdNB51%}j=z~=#IpA$ttJQ`e(_ECr*1*fixTgD%wY{7a5fD5?TnV#HDkSj?!puV zer(hDdh5hVR}yM-KSggqCY*&rtr~<_oCi|dC-zDlYd`-a@r@;&wiwvaIULCM;?53l zrJL*-_fXcePothE7LQ!(UgUq-m->-vw%M#J&(khcCh+?~LPd;+?$Nv0h-ok!Wy@-OduZ%2Hw9J!=sDbt zjNg|l8fwdmi?0^Qa;ccJls8w}$6c3S5bpZ$$YkP{bv(#osL?-`%o;l)9CFzVW#VL_ zr#HBCeaC65x(g;UZO^)&@f|+Z+tKj?2I`mYyWQ5hib1bp?f|E+omS4oQd|`ijc%}S znY7#2FG+vMM&l)w89ey@#0xG0ix@jgN3YoaO4Z~jL--y%@VK;Ou`V2SF@M_>Ts3BH zM#GHq5Bqb?n)2~*`-jLUxx_Bm&s#=srkxfezNm~guJ6_M8()Qe+d#Uf*JnvkQfDl*JaW9;OH;aO9I2W3P)3NLXgTaV>tDevN$tG@C0yZ^-d zht2jB9lj!;Gh%6QZ-=#&rJt^bRUKt$OOG+J<$%V@UXuyk)=mYi?`LGaqn$Ipy8q-J zH|Lz<+O;~n2Pu<74A%ngYuLtJJ(WX1q!;I~i-u`9iGjJrN@)8ZaAm@^h zuU6e^zW|q@LXB_>O~O^v)nJw96D=LI^X3xDzm<9|3gsUPMVQ>PS#LI zqzU&Ye&Mr4c?A!W?doer{j4geWN#fHn(FTO_zzWY53Y#0VReXJyu=*}dGFLwv-I0Uov)mi&;Im=HRJNGix& zF=yra8IeH1AIF_pOk%Jece|o+>uh_QZ@cMT3GgL;V`gQwfeHDIeRj-`KYof2WgO{M zEo1u>PG%ZD{T3>dK-=qoJ|n`EA1H`D+Wb79N=r2^3ViwCuPaoK8De9U-ALjO*|6u0 zP|lVV?@)W*(v%-WN++i&qDUR^(Wll>O}}6Jhc_p1VN>j-SO2q0{;fgC)3o~`YKPCe z7zursyc@NdnY|>?3XNY=grprR61Ik(aV#=WPxQBKAQtZm*;y`IF{iW)u3UX=cLi1w z$S!bTw2;0fHsX*k8s_kTV&uD!={FWWJJygdQr5|D*_OCFE*^|;tgn7uemuHUXSG@@ zQ7+O92AUe2TGmeW%3H2GP9Tx;om%V%fbtc>7<%h)4v_D08 zOgw|bSDFQsprSeb`gK;Pw|Jf&;4Ke+uWnKac$r+HVSDqnyzs)l4uvvm?FnLGH zZE@8D6H<3RD)_gv3RK0&V)Gt_6MdHQ@u(9K^IM;p$HA$ah3XGb)2dtAh>W&v=SIZz zRR@zVk%LAozjQa`SR$(4Q1uU%cjnwgKsG*&qsI%hD|ir>`Q;^5G3_2V;=2mNG{UCd z0ecMEL+j6Z?mW0ru`9GZbt=trx=8~VG=$XbYY!oUxx{3dQiIFCSTa&p~$I6FU1 zUS-H4+fdJlDQldcZ(W^Jw&SSXJ5nVjs9=-CfSms=+$PHw;}Wr-BP1z&V?$#b<2<)6 zkmIqzB0Jw6dnGGM*!tdvV>8yb5PD( z{H(4V8ZlJe+zV&j%8H6JZz}fCuzz*+(Xiz&hiVqrWyz5S$5;_u`^*<5OFP-S&Z|FP z$CkT4<*cF=J$zK@LzCKz%A()G3Cuk=;;s7n6!on!pcb3Qt=qy(`{+|nvMjH=5YQ+0 zLVV3sE9Nrd%!JcLgXEEHI4ej}-Pwwia%%b5ey3W~@aJaL}IL8fnOwB-2uV!)`NqA3R-<_0wMZadg+9KzfeeKuxPigNh&ZtgntCIg@ zi+4xRSJc3!8NjSc6XIXuBE?5yMD79+{JYu+N5R0J@wbH~7Td{1o~Bvb=)#BBZNQF} zl9JVMmdiQgZ}SVd&PoFFl$3cbvo7dvZj0uX6fPPXk)=YV;suMj;SqKV4X^95Ue)0N zW6W}sTCxWpTUrmWe8hf#(*j5uQzkg|9NSR*GI$Piue0%IidHD){zB^kuAs(;EQ;yZ zstedw41&_6BAIqmBy?XZ)rkc&xwbi$o5-`R8YOn+O;qQynGtBZ4WxdT2Z-KpjaZlW zy~^SMv7iOsQOvg!?se;T$6j`wnX2~7oPQl#Nua$c7O^8icI67q(3<&6oVW{}j^@k3 z$M1)pZneEkpwZ6((QU_OND-H`ERNjQFzlm3KF-cr~ z#WC5^nC~LvO~qxVrCVygFuhj{y+CWZ-Sdg^c>Zuy*CrCSHdr@-1CWU$F0@>NVM(zs zR*oi*|8xoNkOh29mQ7(;PZ82hTb^5+4}I%}7fl1)A@DN|5l4otm5d;tXrR-L{aeik zhEtU9-D;XP3)RIW4y;>I9T^9wu2Gl3bJ>m%T**v~u$9c-j%P+|G5&M+iuwAO>tQWc zxs*Rbn%$uHWE1KL@Dz$gAJ(*KK4IRB2T4i0%18vxj*4$ji*O9YWN%fFY3k|y>A1u? zw6HZXD2R$q$EZ(j-Qg0CXs6~eyZQdjrD$0j0YGM~r%=g9$2jA2K}Z#-v4z9kwk=G3 zF*xU4k|~FTIya~>G-tx#yN6_?Jn~{t3OH#oUX{C>=%pY7b*51=38w8Swja|WJVLsd-Ei}{Ya%MNdf8f4ZC{;i#Y$xtr9|Eh2`JJQ3 z->c@OYtrYN^30Z&T}2_&^;HPL@h#+>1~XC}HjPrzM0$J3?XRks>{jUc&EUm;LeT|H zQy*|!fq-s&7MC#5CRzN8|NI4ziZri$J#`Z1hk%8>jJGTlx@YFB5DU$L_1J~PX5UMc zmc)J(IQO@5;u3;_u9Cnk`ASebe7sr8aY2 J;>RYw{{ab}f_4A^ diff --git a/docs/_images/fittrackee_screenshot-04.png b/docs/_images/fittrackee_screenshot-04.png index a498234c1fa13fe7fc041a43315bed6b65460bd1..075691c2d9326d727c334c4954a03fdef6550cb6 100644 GIT binary patch delta 20437 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 delta 20432 zcmaI7Ra6~KxCDw5f+kq75Zv7zg1cLAcXu7!0}1Z#?(Xg`!QI^*?&d$|o^_vYKkT(< z*wfS9Uwu{8!psU((K6H@V({m`B=~^3^Gf9x;rFUAYH$be5pcOqjzxj^3=Lw9>Rt`dt=c^sT8~EA_36la3&`%?&Xa4T?idpFIfFP}q({Jn5XBmP zfQg?S{>Z}G&H~Y>R|oI?x}K>svo~?m-dp0%>piuQEIg)S1XtkBW0FEE+n*D_-t2-@ ziw_()`s(tGMx(8@`YyfXSmSM0bnZ4zhJq}sm>X(kM%u6w_n1g?Z zR~)=ueY94(CA2t7$ndO~6eQLn+sV`mK)t(d?$!_Iu*M8zV<=B752q17u_GDLsXw>P z&P``#iEb^g-ACiQ`&w?)qI34Etg0F&sK3+DSL5wz`SlcWUyUk2w+cAf4MTqpoAMiD zrFOWB(K94YB`e(hd~y8zI&zgfs9Qy@5$*`VbxvUnmm&72T!;(?L;KtrE_(thAS4ey zB@4&?hXp~LoPWYM5-5m8u}R%yhF$g{esU7Zln9PI3F}|Ac}>FIEX?tPMgvZr5mK>A zhm|5hFhj#la(vM^EX?c@lufY;;jt?2SS)jzl4Z)pzFU8Y7sdZl5=u8m#Q(C+nplO&3YNK08l0HNT6{2x`jlh`-jNgA zE?jdGy_QUC}0WTe^ zYcD9tp|R;6nfIF?sknIX#hXi+klwYpWp3pF;jUQoAiAOZmGe3=d2r{Y@wg5swxw|O z`sAE2y&syDE5&pFhgi;3BXdWqWya<{<`MD-_(%*k6gGeXVKp)uX{yjhlt8aSbc{!Q z`*_kT;y&teYigCYEFm!tX+~(!PE%}{p`1ivj zpOs6>a@sCnF~aL;TeffZL0O-{E57Zazjf(QF+>RsTwLbOt59R1>kZ96idhz%Hx3?9 z6tOe5wTP*KA_sSlS%D$|a{6C6NQP_LNM9LuUGr;iR{^G{;8$;)Gw-Y(IbM6={hME?>4vfP)Tjs;#A!-Peavt!e z*w6IVwfs}>&SxTU3$=?cI2 zmR~0 z#~JyT3B7LD$iFI<`;gb2t?5X0@hz-!H(?iRJwiED=#~keiFFek- z